Computer >> Máy Tính >  >> Lập trình >> C ++

Số lượng số nguyên với số bit đặt lẻ trong C ++

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