Đ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:
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 \(2\) thì lực đẩy sẽ đủ mạnh để quả bóng vào lỗ. Cho một số xu nhất định \(n\) , hãy tính xem với ngần đấy số xu thì có thể đẩy bóng vào lỗ được hay không?
Đầu vào
Dòng đầu chứa số testcase \(t\) \((1 \le t \le 10^5)\)
Dòng tiếp theo chứa các số \(n\) \((1 \le n \le 10^{18})\).
Đầu ra
Một dòng duy nhất chứa kết quả \(y\) hoặc \(n\) biểu thị kết quả bóng vào lỗ hoặc không.
Ví dụ
Đầu vào:
4
12
11
10
9
Đầu ra:
n
n
y
y
Ghi chú:
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