ধরুন আমাদের একটি ধনাত্মক পূর্ণসংখ্যা N আছে, আমরা সংখ্যাগুলিকে যেকোনো ক্রমে (মূল ক্রম সহ) পুনর্বিন্যাস করি যাতে অগ্রণী সংখ্যাটি অ-শূন্য হয়। আমাদের পরীক্ষা করতে হবে যে আমরা এটি এমনভাবে করতে পারি যে ফলাফল সংখ্যাটি 2 এর একটি শক্তি। তাই যদি সংখ্যাটি 46 এর মত হয়, তাহলে উত্তরটি সত্য হবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
গণনা নামে একটি পদ্ধতি সংজ্ঞায়িত করুন, এটি x ইনপুট হিসাবে গ্রহণ করবে
-
ret :=0
-
যখন x 0
নয়-
ret :=ret + 10 ^ x এর শেষ সংখ্যা
-
x :=x / 10
-
-
রিটার্ন রিটার্ন
-
প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
-
x :=গণনা(N)
-
আমি 0 থেকে 31 রেঞ্জের জন্য
-
যদি count(2^i) =x, তাহলে true ফেরত দিন
-
-
মিথ্যা ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#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