हमें दो धनात्मक संख्याएँ num1 और num2 के साथ दिया गया है। लक्ष्य इन दोनों में अंकों के प्रतिस्थापन के बाद इन दोनों का न्यूनतम योग और अधिकतम योग ज्ञात करना है। हमें दोनों संख्याओं में प्रत्येक संख्या से अंकों को बदलने की अनुमति है। मान लीजिए num1 434 है और num2 324 है और हम अंक 3 को 4 से और अंक 4 को 3 से बदल सकते हैं। तब न्यूनतम योग −333+323=656 होगा और अधिकतम योग 444+424=864 होगा।
आइए अंकों के प्रतिस्थापन 3 के साथ 4 और इसके विपरीत के उदाहरणों के साथ समझते हैं -
इनपुट
num1=3224 num2=4321
आउटपुट
Maximum sum is : 8645 Minimum sum is : 6544
स्पष्टीकरण - दोनों संख्याओं को 4 से बड़ा बनाने के लिए सभी 3s को 4s से बदलना 3 से बड़ा है।
num1 4224 हो जाता है और num2 4421 हो जाता है और योग 8645 हो जाता है, सभी 4s को 3s से बदल दिया जाता है ताकि दोनों संख्याओं को छोटा किया जा सके क्योंकि 3, 4 से कम है।
num1 3223 हो जाता है और num2 3321 हो जाता है और योग 6544 हो जाता है
इनपुट
num1=3111 num2=4111
आउटपुट
Maximum sum is : 8222 Minimum sum is : 6222
स्पष्टीकरण - दोनों संख्याओं को 4 से बड़ा बनाने के लिए सभी 3s को 4s से बदलना 3 से बड़ा है।
num1 4111 हो जाता है और num2 4111 हो जाता है और योग 8222 होता है, सभी 4s को 3s से बदल देता है ताकि दोनों संख्याओं को छोटा किया जा सके क्योंकि 3, 4 से कम है।
num1 3111 हो जाता है और num2 3111 हो जाता है और योग 6222 हो जाता है
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
संख्याएँ चर num1 और num2 में मौजूद हैं।
-
फ़ंक्शन कैलकुलेटसम (int n1,int n2) का उपयोग अंकों के प्रतिस्थापन के बाद न्यूनतम और अधिकतम संख्याओं के योग की गणना के लिए किया जाता है।
-
यह पैरामीटर के रूप में दो नंबर n1 और n2 लेता है और minSum और maxSum में संग्रहीत परिणाम प्रदर्शित करता है।
-
सबसे पहले हम दोनों संख्याओं में से प्रत्येक 4 को 3 से प्रतिस्थापित करते हैं और num2 और num2 में क्रमशः दोनों के लिए replace(n1,4,3) और replace(n2,4,3) को कॉल करके नए मानों को संग्रहीत करते हैं।
-
नया num1 और num2 जोड़कर न्यूनतम योग की गणना करें।
-
इसी तरह प्रत्येक 3 को 4 से बदलने के लिए प्रतिस्थापित (n1,3,4) और प्रतिस्थापित (n2,3,4) को कॉल करके उपरोक्त चरणों को दोहराएं और अधिकतम योग की गणना करें।
-
फ़ंक्शन रिप्लेस (इंट एक्स, इंट डिजिट 1, इंट डिजिट 2) एक्स में प्रत्येक डिजिट 1 को डिजिट 2 से बदल देता है और नया नंबर देता है।
-
वेरिएबल नंबर 0 से आरंभिक नई प्राप्त संख्या को संग्रहीत करता है।
-
प्रत्येक पुनरावृत्ति के लिए गुणक को 10 से संग्रहीत करने के लिए temp का उपयोग किया जाता है।
-
हम x को 10 से विभाजित करके और शेष को रेम में जमा करके दाहिने हाथ से प्रत्येक अंक लेंगे।
-
यदि रेम अंक 1 के बराबर है, तो इसे अंक 2 से बदलें। नया नंबर प्राप्त करने के लिए इसे जोड़ें =संख्या + अंक 2 * अस्थायी;
-
अन्यथा कोई परिवर्तन नहीं संख्या =संख्या + रेम * अस्थायी;
-
x को 10 से भाग देकर घटाएँ और गुणक को 10 से बढ़ाएँ। (remp=temp*10)
-
प्राप्त संख्या लौटाएं।
उदाहरण
#include<bits/stdc++.h> using namespace std; //replace digit1 with digit2 int replace(int x, int digit1, int digit2){ int number = 0; int temp = 1; while (x > 0){ int rem = x % 10; // Required digit found, replace it if (rem == digit1) number = number + digit2 * temp; else number = number + rem * temp; temp *= 10; x = x / 10; } return number; } void calculateSum(int n1, int n2){ //replace 4 by 3 int num1=replace(n1,4,3); int num2=replace(n2,4,3); int minSum=num1+num2; //replace 3 by 4 num1=replace(n1,3,4); num2=replace(n2,3,4); int maxSum=num1+num2; std::cout << "Minimum Sum by digit replacement: " << minSum; std::cout << "\nMaximum Sum by digit replacement: " << maxSum; } int main(){ int num1 = 3131, num2 = 4141; calculateSum(num1, num2); return 0; }
आउटपुट
Minimum Sum by digit replacement: 6262 Maximum Sum by digit replacement: 8282