এই সমস্যায়, আমাদেরকে একটি সংখ্যা নির্দেশ করে একটি স্ট্রিং দেওয়া হয়েছে। আমাদের কাজ হল C++ এ একটি সংখ্যায় M ধারাবাহিক সংখ্যার সর্বাধিক যোগফল এবং গুণফল খুঁজে বের করার জন্য একটি প্রোগ্রাম তৈরি করা।
সমস্যা বর্ণনা
আমরা M পরপর অঙ্কের সমস্ত ক্রম খুঁজে পাই। এবং সর্বোচ্চ যোগফল এবং পণ্য ফেরত দিন।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট
number = 2379641, M = 4
আউটপুট
maxSum = 26maxProd = 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