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

ตรวจสอบว่าตัวเลขที่ระบุเป็นกำลังของ d โดยที่ d เป็นกำลังของ 2 ใน Python


สมมติว่าเราเป็นจำนวน n และอีกค่าหนึ่ง x เราต้องตรวจสอบว่ามันเป็นกำลังของ x หรือไม่ โดยที่ x เป็นกำลังเลข 2

ดังนั้น หากอินพุตเป็น n =32768 x =32 เอาต์พุตจะเป็น True เนื่องจาก n คือ x^3

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • จากวิธีหลัก ให้ทำดังนี้ -
  • cnt :=0
  • ถ้า n ไม่ใช่ 0 และ (n AND (n - 1)) จะเหมือนกับ 0 ดังนั้น
    • ในขณะที่ n> 1 ทำ
      • n =n/2
      • cnt :=cnt + 1
    • คืนค่า cnt mod (log c ฐาน 2) เหมือนกับ 0
  • คืนค่าเท็จ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def find_pow_of_2(n):
   return (1 + find_pow_of_2(n / 2)) if (n > 1) else 0
def solve(n, c):
   cnt = 0
   if n and (n & (n - 1)) == 0:
      while n > 1:
         n >>= 1
         cnt += 1
      return cnt % (find_pow_of_2(c)) == 0
   return False
n = 32768
x = 32
print(solve(n, x))

อินพุต

32768, 32

ผลลัพธ์

True