समस्या विवरण
मान लीजिए हमारे पास एक पूर्णांक है; हमें जांचना है कि वह 4 की घात है या नहीं।
उदाहरण
यदि इनपुट है: 16, तो आउटपुट होगा True।
हल करने का दृष्टिकोण
इस समस्या को हल करने के लिए निम्नलिखित चरणों का पालन करें:
- यदि num < 0, तो false लौटाएं
- यदि num & (num - 1) शून्येतर है, तो false लौटाएं (यह जांचता है कि क्या num 2 की घात है)
- यदि (num & 0x55555555) शून्य है, तो false लौटाएं (यह जांचता है कि क्या सेट बिट विषम स्थिति में है)
- true लौटाएं
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool isPowerOfFour(int num) {
if (num < 0)
return false;
if (num & (num - 1))
return false;
if (!(num & 0x55555555))
return false;
return true;
}
};
int main() {
Solution ob;
cout << (ob.isPowerOfFour(64));
return 0;
}
इनपुट
64
आउटपुट
1