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