Cho một số n, chúng ta phải tìm số lượng các số nguyên với một số lẻ các bit tập hợp ở dạng nhị phân của chúng. Hãy xem một ví dụ.
Đầu vào
n = 10
Đầu ra
5
Có 5 số nguyên từ 1 đến 10 với số bit đặt lẻ ở dạng nhị phân.
Thuật toán
-
Khởi tạo số N.
- Viết một hàm để đếm số bit đã đặt ở dạng nhị phân.
-
Khởi tạo số đếm thành 0
-
Viết một vòng lặp lặp lại từ 1 tới N.
-
Đếm số bit đã đặt của mỗi số nguyên.
-
Tăng số lượng nếu số bit đã đặt là lẻ.
-
-
Trả lại số đếm.
Thực hiện
Sau đây là cách thực hiện thuật toán trên trong 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;
} Đầu ra
Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.
5