이 튜토리얼에서는 숫자가 한 자릿수로 줄어들 때까지 자릿수의 합과 곱의 최대값을 찾는 프로그램에 대해 설명합니다.
이를 위해 무작위 번호가 제공됩니다. 우리의 임무는 주어진 수의 자릿수가 한 자릿수로 변환될 때까지 자릿수의 합과 곱의 최대값을 찾아 출력하는 것입니다.
예시
#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