मान लीजिए कि हमारे पास एक धनात्मक पूर्णांक N है, हम अंकों को किसी भी क्रम में (मूल क्रम सहित) इस प्रकार पुन:व्यवस्थित करते हैं कि प्रमुख अंक गैर-शून्य हो। हमें यह जांचना होगा कि क्या हम इसे इस तरह से कर सकते हैं कि परिणामी संख्या 2 की शक्ति है। इसलिए यदि संख्या 46 की तरह है, तो उत्तर सत्य होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
गिनती नामक एक विधि को परिभाषित करें, यह x को इनपुट के रूप में लेगा
-
रिट:=0
-
जबकि x 0 नहीं है
-
ret :=ret + 10 ^ x का अंतिम अंक
-
एक्स:=एक्स / 10
-
-
वापसी रिट
-
मुख्य विधि से निम्न कार्य करें -
-
एक्स:=गिनती (एन)
-
मेरे लिए 0 से 31 की सीमा में
-
अगर गिनती(2^i) =x, तो सही लौटें
-
-
झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int count(int x){
int ret = 0;
while(x){
ret += pow(10, x % 10);
x /= 10;
}
return ret;
}
bool reorderedPowerOf2(int N) {
int x = count(N);
for(int i = 0; i < 32; i++){
if(count(1 << i) == x) return true;
}
return false;
}
};
main(){
Solution ob;
cout << (ob.reorderedPowerOf2(812));
} इनपुट
812
आउटपुट
1