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

C++에서 숫자가 한 자릿수로 줄어들 때까지 자릿수의 합과 곱의 최대값

<시간/>

이 튜토리얼에서는 숫자가 한 자릿수로 줄어들 때까지 자릿수의 합과 곱의 최대값을 찾는 프로그램에 대해 설명합니다.

이를 위해 무작위 번호가 제공됩니다. 우리의 임무는 주어진 수의 자릿수가 한 자릿수로 변환될 때까지 자릿수의 합과 곱의 최대값을 찾아 출력하는 것입니다.

예시

#include<bits/stdc++.h>
using namespace std;
//converting number to single digit by adding
long repeatedSum(long n) {
   if (n == 0)
      return 0;
   return (n % 9 == 0) ? 9 : (n % 9);
}
//converting number to single digit by multiplying
long repeatedProduct(long n) {
   long prod = 1;
   while (n > 0 || prod > 9) {
      if (n == 0) {
         n = prod;
         prod = 1;
      }
      prod *= n % 10;
      n /= 10;
   }
   return prod;
}
//finding maximum
long maxSumProduct(long N) {
   if (N < 10)
      return N;
   return max(repeatedSum(N), repeatedProduct(N));
}
int main() {
   long n = 631;
   cout << maxSumProduct(n)<<endl;
   return 0;
}

출력

8