मान लीजिए कि हमारे पास एक धनात्मक पूर्णांक 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