문제 설명
정수 N이 있습니다. N을 K 정수의 합으로 표현해야 이러한 정수 중 일부 또는 전체를 더함으로써 1에서 N 범위의 모든 숫자를 얻을 수 있습니다. 작업은 K<의 최소값을 찾는 것입니다. /P>
예시
N =8이면 최종 답, 즉 K는 3
정수 1, 2, 3, 4를 취한 다음 이러한 그룹의 일부 또는 전체를 추가하면 1에서 N까지 범위의 모든 숫자를 얻을 수 있습니다.
<예:1 =12 =23 =34 =45 =1 + 56 =4 + 27 =4 + 38 =1 + 3 + 4알고리즘
주어진 정수의 비트 수 계산
예시
#include네임스페이스 std;int getMinNumbers(int n) { int cnt =0; 동안 (n) { ++cnt; n =n>> 1; } return cnt;}int main() { int n =8; cout <<"최소 필수 숫자 =" < 위의 프로그램을 컴파일하고 실행할 때. 다음 출력을 생성합니다.
출력
최소 필수 숫자 =4