इस समस्या में, हमें एक संख्या को दर्शाने वाली एक स्ट्रिंग दी जाती है। हमारा कार्य C++ में किसी संख्या में M क्रमागत अंकों के अधिकतम योग और गुणनफल को खोजने के लिए एक प्रोग्राम बनाना है।
समस्या का विवरण
हम M क्रमागत अंकों के सभी क्रम पाते हैं। और अधिकतम राशि और उत्पाद लौटाएं।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
number = 2379641, M = 4
आउटपुट
maxSum = 26maxProd = 1512
स्पष्टीकरण
आकार 4 के सभी अनुगामी 2379, 3796, 7964, 9641 हैं। मैक्ससम =7 + 9 + 6 + 4 =26 मैक्सप्रोड =7 * 9 * 6 * 4 =1512
समाधान दृष्टिकोण
समस्या का एक सरल समाधान यह है कि आकार M के सभी संभावित क्रमागत क्रमों को संख्या के रूप में खोजें। फिर पूर्णांक के सभी मानों को जोड़ें और गुणा करें और फिर सभी योग और उत्पाद मानों का अधिकतम मान लौटाएं।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,
#include <iostream> using namespace std; int findMaxVal(int x, int y){ if(x > y) return x; return y; } void calcMaxProductAndSum(string number, int M){ int N = number.length(); int maxProd = -1, maxSum = -1; int product = 1, sum = 0; for (int i = 0; i < N - M; i++){ product = 1, sum = 0; for (int j = i; j < M + i; j++){ product = product * (number[j] - '0'); sum = sum + (number[j] - '0'); } maxProd = findMaxVal(maxProd, product); maxSum = findMaxVal(maxSum, sum); } cout<<"The Maximum Product of "<<M<<" consecutive digits in number "<<number<<" is "<<maxProd<<endl; cout<<"The Sum Product of "<<M<<" consecutive digits in number "<<number<<" is "<<maxSum; } int main() { string str = "2379641"; int m = 4; calcMaxProductAndSum(str, m); }
आउटपुट
The Maximum Product of 4 consecutive digits in number 2379641 is 1512 The Sum Product of 4 consecutive digits in number 2379641 is 26