用 C++ 檢查數字是否慘淡


在這裡,我們將瞭解一個數字是否是慘淡的。一個數字被稱為慘淡的,如果它不能表示為一個非負數 x 和 x 的位集計數之和。因此對於任何非負數 x,x + set_bit_count(x) 不等於 n。

概念非常簡單,如果位集計數與數字不同,那麼就是慘淡的,否則就不是慘淡的。

示例

 線上演示

#include <iostream>
using namespace std;
int set_bit_count(int x) {
   unsigned int bit_count = 0;
   while (x != 0) {
      x &= (x - 1);
      bit_count++;
   }
   return bit_count;
}
bool isBleakNumber(int n) {
   for (int i = 1; i < n; i++)
   if (i + set_bit_count(i) == n)
      return false;
      return true;
}
int main() {
   isBleakNumber(3) ? cout << "Yes\n" : cout << "No\n";
   isBleakNumber(4) ? cout << "Yes\n" : cout << "No\n";
}

輸出

No
Yes

更新於:2019-10-22

328 次訪問

開啟你的 職業生涯

完成課程即可獲得認證

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