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

দুইয়ের ঘাত যোগ করে সংখ্যা গঠন (C++)

এই সমস্যায় একটি পূর্ণসংখ্যা N দেওয়া আছে। N কে ২-এর ঘাতগুলোর যোগফল হিসেবে প্রকাশ করতে হবে এবং সেই ঘাতগুলো প্রিন্ট করতে হবে।

উদাহরণ

ইনপুট: 17

আউটপুট: 0, 4

ব্যাখ্যা: 17 = 2⁴ + 2⁰ = 16 + 1

পদ্ধতি

সংখ্যাকে ২ দিয়ে বারবার ভাগ করে বাইনারি রূপান্তর করা হয়। যেখানে রিমেইন্ডার ১ পাওয়া যায়, সেটিই ঘাতের সূচক।

C++ প্রোগ্রাম

#include <bits/stdc++.h>
using namespace std;

void sumPower(long int x) {
    vector<long int> powers;
    while (x > 0) {
        powers.push_back(x % 2);
        x = x / 2;
    }
    for (int i = 0; i < powers.size(); i++) {
        if (powers[i] == 1) {
            cout << i;
            if (i != powers.size() - 1) cout << ", ";
        }
    }
    cout << endl;
}

int main() {
    int number = 23342;
    cout << "২-এর ঘাতগুলো যাদের যোগফল " << number << ": ";
    sumPower(number);
    return 0;
}

আউটপুট

২-এর ঘাতগুলো যাদের যোগফল 23342: 1, 2, 3, 5, 8, 9, 11, 12, 14
  1. Frugal সংখ্যা চেক করা (C++)

  2. C++ একটি সংখ্যাকে অন্য সংখ্যার ঘাতে প্রকাশ করা

  3. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা

  4. C++ প্রোগ্রাম: সংখ্যা ২-এর নন-জিরো পাওয়ারের যোগফল কিনা চেক