Đ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


  • 0
    Hoàng_CNTT1_K65  commented on Nov. 18, 2024, 10:29 a.m.

    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


  • -4
    viethungcntt1k63  commented on July 29, 2023, 12:00 p.m.

    Ở 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