用 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