Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 숫자가 Bleak인지 확인

<시간/>

여기서 숫자가 Bleak인지 여부를 확인합니다. 양수 x의 합과 x에 설정된 비트 수의 합으로 나타낼 수 없는 숫자를 bleak이라고 합니다. 따라서 x + set_bit_count(x)는 음수가 아닌 숫자 x에 대해 n과 같지 않습니다.

개념은 매우 간단합니다. 설정된 비트 수 + 숫자가 숫자와 같지 않으면 그것이 Bleak이고 그렇지 않으면 그렇지 않습니다.

예시

#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";
}

출력

No
Yes