इस समस्या में, हमें दो संख्याएँ 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