Đong xu
Submit solution
Points:
1.5 (partial)
Time limit:
1.5s
Memory limit:
98M
Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG
Killua đang chơi game. Cơ chế của trò này rất đơn giản: trên màn hình có một quả bóng, nhập số xu vào và máy sẽ chuyển số xu thành lực đạo đẩy bóng. Công thức chuyển hoá số xu thành lực đẩy như sau:
Copy
1. Nếu số xu hiện tại là chẵn: gọi số mũ lớn nhất của 2 mà số xu hiện tại chia hết là k, lấy số xu chia cho 2^k rồi cộng với k.
Nếu số xu hiện tại là lẻ: chia lấy nguyên cho 2.
2. Nếu số xu < 10 thì dừng.
Nếu không quay lại bước 1.
Nếu số xu còn lại cuối cùng chia hết cho
Đầu vào
Dòng đầu chứa số testcase
Dòng tiếp theo chứa các số
Đầu ra
Một dòng duy nhất chứa kết quả
Ví dụ
Đầu vào:
Copy
4
12
11
10
9
Đầu ra:
Copy
n
n
y
y
Ghi chú:
Copy
12 / 4(2*2) = 3, 3 + 2 = 5 => 5 < 10 và 5 không chia hết cho 2
11 / 2 = 5 => 5 < 10 và 5 không chia hết cho 2
10 / 2 = 5, 5 + 1 = 6 => 6 < 10 và 6 chia hết cho 2
9 / 2 = 4 => 4 < 10 và 4 chia hết cho 2
Comments
include <stdio.h>
int check(long long n) { while (n >= 10) { if (n % 2 == 0) { long long k = 0; while (n % 2 == 0) { n /= 2; k++; } n += k; } else { n /= 2; } } return (n % 2 == 0); } int main() { long long x; scanf("%lld", &x);
long long a[x]; for (long long i = 0; i < x; i++) { scanf("%lld", &a[i]); }
for (long long i = 0; i < x; i++) { printf("%c\n", check(a[i]) ? 'y' : 'n'); }
return 0; } mng xem giúp e sai ở đâu vậy ạ , e sai ở test 3, 4
Ở phần ghi chú dòng thứ 4 n =9 thì đã bé hơn 10 , vì vậy không chia tiếp , 9 ko chia hết cho 2 nên output là n