मान लीजिए हमारे पास एक संख्या n है। हमें जांचना है कि क्या यह 2 की घात है या नहीं।
उदाहरण के लिए, यदि इनपुट है n = 2048, तो आउटपुट होगा True क्योंकि 2048, 2^11 है।
समाधान दृष्टिकोण
बिटवाइस ट्रिक: 2 की घात का बाइनरी प्रतिनिधित्व में केवल एक बिट सेट होता है। n & (n-1) उस बिट को क्लियर करता है। इसलिए n & (n-1) == 0 यदि और केवल यदि n 2 की घात है (और n != 0)।
- यदि
n == 0, तो False लौटाएं। (n & (n - 1)) == 0लौटाएं।
पायथन कार्यान्वयन
def solve(n):
if n == 0:
return False
return (n & (n - 1)) == 0
n = 2048
print(solve(n))
इनपुट
2048
आउटपुट
True