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 浏览

开启你的职业生涯

完成课程获得认证

开始
广告