Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình kiểm tra số có phải lũy thừa của 2 trong Python

Cho số n. Kiểm tra xem n có phải lũy thừa của 2 hay không.

Ví dụ: n = 2048 → True (vì 2048 = 2¹¹).

Thuật toán giải quyết (Thao tác bit O(1))

  1. Nếu n == 0: trả về False
  2. Kiểm tra (n & (n-1)) == 0:
    • Số lũy thừa của 2 có dạng nhị phân: 1000...0 (chỉ có 1 bit 1)
    • n-1 sẽ là 0111...1
    • AND của hai số = 0
  3. Trả về kết quả

Ví dụ minh họa

def solve(n):
    if n == 0:
        return False
    return (n & (n - 1)) == 0

n = 2048
print(solve(n))

Đầu vào

2048

Đầu ra

True