Cho số n. Kiểm tra xem biểu diễn nhị phân có chỉ có hai bit 1 ở vị trí đầu (MSB) và cuối (LSB) không.
Ví dụ: n=17 (10001) → True.
Thuật toán
- Nếu n == 1 → True.
- Kiểm tra n-1 có phải lũy thừa của 2 không:
(n-1) & (n-2) == 0.
Ví dụ code
def is_pow_of_two(n):
return (n & (n-1)) == 0
def solve(n):
if n == 1:
return True
return is_pow_of_two(n-1)
n = 17
print(solve(n))
Đầu vào
17
Đầu ra
True