इस समस्या में, हमें एक स्ट्रिंग दी गई है जो एक संख्या को दर्शाती है। हमारा कार्य C++ में एक संख्या में M लगातार अंकों का अधिकतम योग और गुणनफल ढूंढने के लिए एक प्रोग्राम बनाना है।
समस्या विवरण
हम आकार M के सभी लगातार अंकों के अनुक्रम ढूंढते हैं। और अधिकतम योग और गुणनफल वापस करते हैं।
आइए एक उदाहरण से समस्या को समझते हैं,
इनपुट
number = 2379641, M = 4
आउटपुट
maxSum = 26 maxProd = 1512
व्याख्या
आकार 4 के सभी सबसीक्वेंस हैं 2379, 3796, 7964, 9641। maxSum = 7 + 9 + 6 + 4 = 26, maxProd = 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