मान लीजिए हम एक संख्या n और दूसरा मान x, हमें यह जांचना है कि यह x की घात है या नहीं, जहां x 2 की संख्या घात है।
इसलिए, यदि इनपुट n =32768 x =32 जैसा है, तो आउटपुट सही होगा क्योंकि n x^3 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- मुख्य विधि से निम्न कार्य करें -
- सीएनटी:=0
- यदि n 0 नहीं है और (n और (n - 1)) 0 के समान है, तो
- जबकि n> 1, करो
- n =n/2
- सीएनटी:=सीएनटी + 1
- वापसी cnt mod (लॉग सी बेस 2) 0 के समान है
- जबकि n> 1, करो
- झूठी वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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