কম্পিউটার টিউটোরিয়াল

সি++-এ রি-অর্ডারড পাওয়ার অফ ২ (Reordered Power of 2)


মান লেযিয়ে একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া আছে, এর ডিজিটগুলো যেকোনো ক্রমে (মূল ক্রম সহ) রি-অর্ডার করতে হবে যাতে লিডিং ডিজিট নন-জিরো হয়। এইভাবে কি ফলাফল ২-এর কোনো পাওয়ার হতে পারে তা যাচাই করতে হবে। ৪৬ হলে উত্তর true।

এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব -

  • count() নামে একটি মেথড সংজ্ঞায়িত করুন, যা x ইনপুট নেবে

  • ret := 0

  • যখন x != ০

    • ret := ret + 10^(x % 10)

    • x := x / 10

  • ret রিটার্ন করুন

  • মেইন মেথড থেকে - x := count(N)

  • i = 0 থেকে 31 পর্যন্ত লুপ চালান

    • যদি count(2^i) == x হয়, true রিটার্ন করুন

  • false রিটার্ন করুন

নিচের বাস্তবায়নটি দেখে আরও ভালো বুঝতে পারবেন -

উদাহরণ

#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. সংখ্যার ঘাত (Power) বের করার C++ প্রোগ্রাম (রিকার্সিভ ও নন-রিকার্সিভ)

  4. পাইথনে রি-অর্ডারড পাওয়ার অফ ২ চেক করার প্রোগ্রাম