কম্পিউটার টিউটোরিয়াল

C++-এ একটি সংখ্যায় M সन्नিহিত অঙ্কের সর্বোচ্চ যোগফল ও গুণফল

এই সমস্যায় একটি স্ট্রিং দেওয়া আছে যা একটি সংখ্যা প্রকাশ করে। আমাদের কাজ হল 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
  1. সংখ্যার সম ও বিষম স্থানের অঙ্কের যোগফল বের করা C++-তে

  2. C++-এ অ্যারেতে সর্বোচ্চ গুণফল দায়ক কোয়াড্রুপল (Quadruple) নির্ণয়

  3. C++-এ একটি সংখ্যা তার অঙ্কগুলোর ফ্যাক্টোরিয়ালের যোগফল দিয়ে বিভাজ্য কিনা চেক করা

  4. C++-এ দেওয়া সংখ্যার ডিজিটগুলোর যোগফল বের করা