在 C++ 中具有奇数个设置位整数的数目


给定一个数字 n,我们需要找出二进制形式中,具有奇数个设置位的整数数目。我们来看一个示例。

输入

n = 10

输出

5

在 1 到 10 的范围内,有 5 个整数在其二进制形式中具有奇数个设置位。

算法

  • 初始化数目 N。

  • 编写一个函数以计算二进制形式中设置位数。
  • 初始化计数为0。

  • 编写一个从1N的循环。

    • 计算每个整数的设置位。

    • 如果设置位数为奇数,则增加计数。

  • 返回计数。

实施

以下是使用 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

更新时间:2021 年 10 月 26 日

325 次浏览

开启你的 职业生涯

完成课程获取认证

开始
广告
© . All rights reserved.