কম্পিউটার

C++ তে 2 এর শক্তি পুনরায় সাজানো


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

  1. একটি সংখ্যা C++ এ অন্য একটি সংখ্যার শক্তি কিনা তা পরীক্ষা করুন

  2. C++ এ টেমপ্লেট মেটাপ্রোগ্রামিং

  3. একটি সংখ্যার শক্তি গণনা করার জন্য C++ প্রোগ্রাম

  4. Python এ 2 এর রিঅর্ডারড পাওয়ার খুঁজে বের করার প্রোগ্রাম