इस समस्या में, हमें दो संख्याएँ n और d दी गई हैं। हमारा कार्य d का k-वाँ गुणक n में जोड़कर अंकों के योग को न्यूनतम करना है।
समस्या विवरण - हमें n में d के k-वें गुणक को जोड़कर अंकों के योग को न्यूनतम करना है।
आइए एक उदाहरण से समझते हैं:
इनपुट
n = 5230, d = 54
आउटपुट
1
व्याख्या
संख्या होगी 5230 + (2*54) = 5338
समाधान दृष्टिकोण
इस समस्या को हल करने का एक सरल तरीका d के 1 से 8 तक के सभी गुणकों की जाँच करना है, क्योंकि 9वें गुणक पर अंकों का योग दोहराया जाता। यह मॉड्यूलो 9 पर आधारित है, जो अंकों का योग लौटाता है। इसलिए a+d*(9k+l) मॉड्यूलो 9, a+d*l मॉड्यूलो 9 के बराबर होता है। अतः हम l*d के सभी गुणकों की जाँच 1 से 8 तक करेंगे और न्यूनतम पाया गया मान लौटाएँगे।
कार्यक्रम में एक सुधार यह किया जा सकता है कि अंकों का योग कभी भी 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