ধরুন আমাদের একটি ধনাত্মক পূর্ণসংখ্যা 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