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

n을 나타내는 데 필요한 이진수의 최소 수를 계산하는 C++ 프로그램

<시간/>

숫자 n이 있다고 가정합니다. 숫자가 양의 정수이고 10진수 표기법의 모든 자릿수가 0 또는 1인 경우 숫자는 이진 십진수입니다. 예를 들어 1001(천 일)은 이진수이고 1021은 그렇지 않습니다. 숫자 n에서 n을 일부(반드시 구별되지는 않음) 이진 소수의 합으로 나타내야 합니다. 그런 다음 필요한 최소 이진 소수 수를 계산합니다.

따라서 입력이 n =121과 같으면 출력은 2가 됩니다. 이는 110 + 11 또는 111 + 10으로 표시될 수 있기 때문입니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

ans := -1
while n > 0, do:
   ans := maximum of ans and (n mod 10)
   n := n / 10
return ans

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;

int solve(int n) {
   int ans = -1;
   while (n > 0) {
      ans = max(ans, n % 10);
      n /= 10;
   }
   return ans;
}
int main() {
   int n = 121;
   cout << solve(n) << endl;
}

입력

121

출력

2