检查一个数字能否表示为 2^x + 2^y (C++)


在这里,我们将看到,如果我们可以将一个数字表示为两个非零 2 的幂的和。因此,我们将检查给定的数字 N 是否可以表示为 (2x + 2y),其中 x, y > 0。例如,数字 10 可以表示为 23 + 21

方法很简单。有两种情况。如果数字 n 为偶数,它可以表示为 2x,其中 x > 0。另一种情况是 N 为奇数,它永远不能表示为 2 的幂的和。我们不能使用 0 次幂,所以我们得不到奇数。所有奇数的二进制表示的最低有效位都是 1。

示例

 在线演示

#include <iostream>
using namespace std;
bool isSumofTwosPower(int n) {
   if((n & 1) == 0){
      return true;
   }else{
      return false;
   }
}
int main() {
   int num = 86;
   if(isSumofTwosPower(num)){
      cout << "Can be represented";
   }else{
      cout << "Cannot be represented";
   }
}

输出

Can be represented

更新于:2019年9月27日

111 次浏览

开启你的职业生涯

完成课程,获得认证

开始学习
广告