在 C++ 中具有奇数个设置位整数的数目
给定一个数字 n,我们需要找出二进制形式中,具有奇数个设置位的整数数目。我们来看一个示例。
输入
n = 10
输出
5
在 1 到 10 的范围内,有 5 个整数在其二进制形式中具有奇数个设置位。
算法
初始化数目 N。
- 编写一个函数以计算二进制形式中设置位数。
初始化计数为0。
编写一个从1到N的循环。
计算每个整数的设置位。
如果设置位数为奇数,则增加计数。
返回计数。
实施
以下是使用 C++ 实现上述算法的方法
#include <bits/stdc++.h>
using namespace std;
int getSetBitsCount(int n) {
int count = 0;
while (n) {
if (n % 2 == 1) {
count += 1;
}
n /= 2;
}
return count;
}
int getOddSetBitsIntegerCount(int n) {
int count = 0;
for (int i = 1; i <= n; i++) {
if (getSetBitsCount(i) % 2 == 1) {
count += 1;
}
}
return count;
}
int main() {
int n = 10;
cout << getOddSetBitsIntegerCount(n) << endl;
return 0;
}输出
如果您运行上述代码,您将得到以下结果。
5
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP