Cho số n. Kiểm tra xem biểu diễn nhị phân của nó có phải palindrome hay không.
Ví dụ: n=9 → nhị phân 1001 → palindrome → True.
Giải thuật
- Đảo ngược bit của
n(hàmreverse_binary): dịch trái kết quả, nếu bit thấp củanlà 1 thì XOR 1, dịch phảin. - So sánh
nvới giá trị đảo ngược.
Mã ví dụ
def reverse_binary(num):
ans = 0
while num > 0:
ans = ans << 1
if num & 1 == 1:
ans = ans ^ 1
num = num >> 1
return ans
def solve(n):
rev = reverse_binary(n)
return n == rev
n = 9
print(solve(n))
Đầu vào
9
Đầu ra
True