C++ 求解兩數之和的 2 的次方


本問題給定一個整數 N。要求大家寫出哪個數的 2 的次方等於該給定數字。

我們以一個例子來了解該問題

輸入 − 17

輸出 − 0, 4

說明 − 17 = 24 + 20 = 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

更新於: 17-4-2020

610 瀏覽

開啟你的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.