Giả sử chúng ta có một số n. Chúng ta phải kiểm tra xem số chỉ có hai bit đặt ở vị trí đầu tiên và cuối cùng hay không.
Vì vậy, nếu đầu vào là n =17, thì đầu ra sẽ là Đúng vì biểu diễn nhị phân của n là 10001, chỉ có hai số 1 ở vị trí đầu tiên và cuối cùng.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- nếu n giống 1, thì
- trả về True
- trả về true nếu n - 1 là lũy thừa của 2, ngược lại là false
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Mã mẫu
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