You are on page 1of 1

1

FUNCBIT
Gọi 𝑐𝑛𝑡(𝑥) là số lượng bit 1 của 𝑥 dưới dạng biểu diễn nhị phân. Chẳng hạn như
𝑐𝑛𝑡(7) = 3, 𝑐𝑛𝑡(0) = 0.
Gọi 𝑓(𝑛) là số lần thực hiện thao tác sau để 𝑛 = 0: Thay thế 𝑛 bằng kết quả của phép
chia lấy dư của 𝑛 cho 𝑐𝑛𝑡(𝑛).
Bạn được cho một số nguyên dương 𝑋 có độ dài 𝑁 trong biểu diễn nhị phân. Với
mỗi 1 ≤ 𝑖 ≤ 𝑁, gọi 𝑋𝑖 là 𝑋 khi bit thứ 𝑖 bị đảo ngược (0 thành 1, 1 thành 0).
Yêu cầu: Tìm 𝑓(𝑋1 ), 𝑓(𝑋2 ), … , 𝑓(𝑋𝑁 ).
Input:
• Dòng đầu gồm một số nguyên dương 𝑁 (1 ≤ 𝑁 ≤ 2 ∗ 105 ).
• Dòng tiếp theo là dãy nhị phân độ dài 𝑁 biểu diễn cho 𝑋 ở hệ nhị phân, có thể có
số 0 ở đầu.

Output: In ra tất cả kết quả trên 𝑁 dòng, dòng thứ 𝑖 tương ứng là 𝑓(𝑋𝑖 ) (1 ≤ 𝑖 ≤ 𝑁).
Ví dụ:
Sample Input Sample Output
3 2
011 1
1
Giải thích:
• 𝑋1 = 7 vậy 𝑓(𝑋1 ) = 2 (7 → 1 → 0)
• 𝑋2 = 1 vậy 𝑓(𝑋2 ) = 1 (1 → 0)
• 𝑋3 = 2 vậy 𝑓(𝑋3 ) = 1 (2 → 0)

LEARNING IS THE EYE OF THE MIND

You might also like