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