Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem số đã cho có phải là lũy thừa của d hay không trong đó d là lũy thừa của 2 trong Python

Giả sử chúng ta là một số n và một giá trị khác x, chúng ta phải kiểm tra xem nó có phải là lũy thừa của x hay không, trong đó x là lũy thừa của 2.

Vì vậy, nếu đầu vào là n =32768 x =32, thì đầu ra sẽ là Đúng vì n là x ^ 3.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Từ phương thức chính, hãy làm như sau -
  • cnt:=0
  • nếu n khác 0 và (n AND (n - 1)) giống 0 thì
    • while n> 1, do
      • n =n / 2
      • cnt:=cnt + 1
    • return cnt mod (log c cơ số 2) giống như 0
  • trả về Sai

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

32768, 32

Đầu ra

True