檢查一個數字是否可以用 C++ 中的 2 的非零次冪之和表示


在這裡我們將看到,如果我們可以將一個數字表示為兩個非零 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-09-27

242 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.