এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যা N দেওয়া হয়েছে। আমাদের কাজ হল সংখ্যাটি প্রিন্ট করা যা 2 এর পাওয়ারে উঠলে সংখ্যাটি দেয়।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক
ইনপুট − 17
আউটপুট − 0, 4
ব্যাখ্যা − 17 =2 4 + 2 0 =16 + 1
এই সমস্যা সমাধানের জন্য, আমরা সংখ্যাটিকে 2 দিয়ে পুনরাবৃত্তভাবে ভাগ করব। এই পদ্ধতিতে, প্রতিটি সংখ্যাকে 2 এর শক্তি হিসাবে উপস্থাপন করা যেতে পারে। এই পদ্ধতিটি সংখ্যাটিকে তার বাইনারি সমতুল্যে রূপান্তর করতে ব্যবহৃত হয়।
উদাহরণ
আমাদের সমাধানের বাস্তবায়ন দেখানোর প্রোগ্রাম
#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<<"Powers of 2 that sum upto "<<number<<"are : "; sumPower(number); return 0; }
আউটপুট
Powers of 2 that sum upto 23342are : 1, 2, 3, 5, 8, 9, 11, 12, 14