用 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP