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

C++에서 N 이하의 모든 정수를 합으로 표현하는 데 필요한 최소 숫자

<시간/>

문제 설명

정수 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