Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าการแสดงเลขฐานสองของตัวเลขเป็นพาลินโดรมใน Python . หรือไม่


สมมติว่าเรามีตัวเลข 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