สมมติว่าเรามีตัวเลข n เราต้องตรวจสอบว่าการแทนค่าไบนารีของ n เป็นพาลินโดรมหรือไม่
ดังนั้น หากอินพุตเป็น n =9 เอาต์พุตจะเป็น True เนื่องจากการแสดงเลขฐานสองของ 9 คือ 1001 ซึ่งก็คือ palindrome
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ตอบ :=0
- ในขณะที่ num> 0, ทำ
- ans :=ans * 2
- ถ้า num เป็นเลขคี่
- ans :=ans XOR 1
- num :=num / 2
- คืนสินค้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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))
อินพุต
9
ผลลัพธ์
True