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

Kiểm tra xem một số có bị mờ trong C ++ hay không

Ở đây chúng ta sẽ xem liệu một số có Bleak hay không. Một số được cho là không rõ ràng nếu nó không thể được biểu diễn dưới dạng tổng của một số dương x và đặt số bit bằng x. Vì vậy, x + set_bit_count (x) không bằng n, với bất kỳ số không âm nào x.

Khái niệm này rất đơn giản, nếu số bit đặt + số không giống với số thì đó là Bleak, ngược lại thì không.

Ví dụ

#include <iostream>
using namespace std;
int set_bit_count(int x) {
   unsigned int bit_count = 0;
   while (x != 0) {
      x &= (x - 1);
      bit_count++;
   }
   return bit_count;
}
bool isBleakNumber(int n) {
   for (int i = 1; i < n; i++)
   if (i + set_bit_count(i) == n)
      return false;
      return true;
}
int main() {
   isBleakNumber(3) ? cout << "Yes\n" : cout << "No\n";
   isBleakNumber(4) ? cout << "Yes\n" : cout << "No\n";
}

Đầu ra

No
Yes