在 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