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

C++에서 주어진 숫자의 세트 비트를 사용하는 최소 숫자

<시간/>

문제 설명

부호 없는 숫자가 주어졌을 때 주어진 부호 없는 숫자의 비트를 사용하여 만들 수 있는 최소 숫자를 찾으십시오.

예시

입력 =10이면 답은 3입니다.

10의 이진 표현은 1010이고 2set 비트의 최소 수는 0011 즉 3

알고리즘

1. Count the number of set bits.
2. (Number of set bits) ^ 2 – 1 represents the minimized number)

예시

#include <bits/stdc++.h>
using namespace std;
int getSetBits(int n) {
   int cnt = 0;
   while (n) {
      ++cnt;
      n = n & (n - 1);
   }
   return cnt;
}
int getMinNumber(int n){
   int bits = getSetBits(n);
   return pow(2, bits) - 1;
}
int main() {
   int n = 10;
   cout << "Minimum number = " << getMinNumber(n) << endl;
   return 0;
   return 0;
}

위의 프로그램을 컴파일하고 실행할 때. 다음 출력을 생성합니다.

출력

Minimum number = 3