এই সমস্যায় একটি স্ট্রিং দেওয়া আছে যা একটি সংখ্যা প্রকাশ করে। আমাদের কাজ হল C++-এ সেই সংখ্যায় M সংখ্যক সন্নিহিত অঙ্কের সর্বোচ্চ যোগফল ও গুণফল বের করা।
সমস্যার বিবরণ
M দৈর্ঘ্যের সব সম্ভাব্য সन्नিহিত সাবসিকোয়েন্স বের করুন। তাদের যোগফল ও গুণফলের সর্বোচ্চ মান রিটার্ন করুন।
উদাহরণ:
ইনপুট
number = 2379641, M = 4
আউটপুট
maxSum = 26 maxProd = 1512
ব্যাখ্যা
দৈর্ঘ্য ৪-এর সব সাবসিকোয়েন্স: 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 "<আউটপুট
The Maximum Product of 4 consecutive digits in number 2379641 is 1512
The Sum Product of 4 consecutive digits in number 2379641 is 26