檢查給定數字是否是d的冪,其中d是2的冪(Python)
假設我們有一個數字n和另一個值x,我們必須檢查它是否是x的冪,其中x是2的冪。
因此,如果輸入類似於n = 32768,x = 32,則輸出將為True,因為n是x³。
為了解決這個問題,我們將遵循以下步驟:
- 從主方法執行以下操作:
- cnt := 0
- 如果n不為0,並且(n AND (n - 1))等於0,則
- 當n > 1時,執行
- n = n/2
- cnt := cnt + 1
- 返回cnt mod (log₂c) 是否等於0
- 當n > 1時,執行
- 返回False
示例
讓我們看下面的實現,以便更好地理解:
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
廣告