문제 설명
부호 없는 숫자가 주어졌을 때 주어진 부호 없는 숫자의 비트를 사용하여 만들 수 있는 최소 숫자를 찾으십시오.
예시
입력 =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