इस समस्या में, हमें एक पूर्णांक 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