एक संख्या दी गई है। उसके अंकों का योग और अंकों का गुणनफल तब तक करें जब तक एकल अंक न आ जाए। दोनों में से अधिकतम मान वापस करें।
अंक योग: डिजिटल रूट फॉर्मूला n%9 (0 के लिए 9)। अंक गुणनफल: पुनरावृत्त गुणनफल।
उदाहरण: 631 → योग एकल अंक: 1, गुणनफल एकल अंक: 8 → अधिकतम 8।
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
long repeatedSum(long n) {
if (n == 0) return 0;
return (n % 9 == 0) ? 9 : (n % 9);
}
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;
}
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