इस समस्या में, हमें दो संख्याएँ n और d दी गई हैं। हमारा कार्य संख्या d जोड़ने के बाद न्यूनतम संभव अंकों का योग ज्ञात करना है।
समस्या का विवरण - हमें n में d का kवां गुणज जोड़कर अंकों के योग को कम करना होगा।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
n = 5230, d = 54
आउटपुट
1
स्पष्टीकरण
The number will be 5230 + (2*54) = 5338
समाधान दृष्टिकोण
समस्या को हल करने का एक सरल तरीका यह होगा कि 1 से 8 तक d के सभी गुणकों की जाँच की जाए, क्योंकि 9वें गुणक पर अंकों का योग दोहराया जाएगा। यह मॉड्यूल 9 पर आधारित है, जो अंकों का योग लौटाएगा। तो, a+d*(9k+l) मॉड्यूल 9, a+d*l मोडुलो 9 के बराबर है। इसलिए हम 1 से 8 तक l*d के सभी गुणकों की जांच करेंगे, और पाया गया न्यूनतम लौटा देंगे।
कार्यक्रम में एक प्रगति इस तथ्य का उपयोग करके की जा सकती है कि अंकों का योग कभी भी 1 से कम नहीं होगा, इसलिए यदि हमारे पास अंकों का योग =1 है, तो हम इसे वापस कर देंगे।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <iostream>
using namespace std;
int calcDigitSum(int n) {
int i = n % 9;
if (i == 0)
return 9;
else
return i;
}
int findMinDigitSum(int n, int d) {
int minSum = 10;
int number;
for (int i = 1; i < 9; i++) {
number = (n + i * d);
minSum = min(minSum, calcDigitSum(number));
if(minSum == 1)
return minSum;
}
return minSum;
}
int main() {
int n = 5230, d = 54;
cout<<"The minimum possible digitsum after adding the number is "<<findMinDigitSum(n, d);
return 0;
} आउटपुट
The minimum possible digitsum after adding the number is 1