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

সম যোগফল ওয়ালা সাবঅ্যারের সংখ্যা খুঁজে বের করা C++-এ

এই সমস্যায়, আমাদের N সংখ্যক এলিমেন্ট সম্বলিত একটি অ্যারে arr[] দেওয়া আছে। আমাদের কাজ হল সম যোগফল ওয়ালা সাবঅ্যারে খুঁজে বের করা।

উদাহরণ

ইনপুট

arr[] = {2, 1, 3, 4, 2, 5}

আউটপুট

28

ব্যাখ্যা

সাবঅ্যারেগুলো হল:

{2}, {4}, {2}, {2, 4}, {2, 2}, {1, 3}, {1, 5}, {3, 5}, {4, 2}, {2, 1, 3}, {2, 1, 5}, {2, 3, 5}, {2, 4, 2}, {1, 3, 4}, {1, 3, 2}, {1, 4, 5}, {1, 2, 5}, {3, 4, 5}, {3, 2, 5}, {2, 1, 3, 4}, {2, 1, 3, 2}, {2, 3, 4, 5}, {2, 3, 2, 5}, {2, 4, 2, 5}, {1, 3, 4, 2}, {1, 4, 2, 5}, {3, 4, 2, 5}, {2, 1, 3, 4, 2}, {2, 1, 3, 4, 2, 5}

সমাধানের পদ্ধতি

এই সমস্যার সহজ সমাধান হল সরাসরি পদ্ধতি: সব সাবঅ্যারে বের করা এবং তাদের যোগফল ক্যালকুলেট করা। এবং সম যোগফল ওয়ালা সাবঅ্যারের জন্য কাউন্ট বাড়াতে হবে। শেষে কাউন্ট রিটার্ন করুন।

প্রোগ্রাম উদাহরণ (সহজ পদ্ধতি)

#include <iostream>
using namespace std;

int countEvenSumSubArray(int arr[], int n){
    int evenSumCount = 0, sum = 0;
    for (int i = 0; i <= n-1; i++){
        sum = 0;
        for (int j = i; j <= n-1; j++){
            sum += arr[j];
            if (sum % 2 == 0)
                evenSumCount++;
        }
    }
    return evenSumCount;
}

int main(){
    int arr[] = {2, 1, 4, 2};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "The count of Subarrays with even sum is " << countEvenSumSubArray(arr, n);
    return 0;
}

আউটপুট

The number of solutions of the linear equation is 8

দক্ষ পদ্ধতি (হ্যান্ডশেক সূত্র)

একটি আরও দক্ষ পদ্ধতি হল হ্যান্ডশেক সূত্র ব্যবহার করা। আমরা একটি টেম্প অ্যারে তৈরি করব ০ এবং ১-এর অকুরেন্স গণনা করার জন্য মডুলো অ্যারেতে। এবং তারপর কাউন্ট ভ্যালু রিটার্ন করব।

প্রোগ্রাম উদাহরণ (দক্ষ পদ্ধতি)

#include <iostream>
using namespace std;

int countEvenSumSubArray(int arr[], int n){
    int temp[2] = {1, 0};
    int count = 0, sum = 0;
    for (int i = 0; i <= n-1; i++){
        sum = ((sum + arr[i]) % 2 + 2) % 2;
        temp[sum]++;
    }
    count += (temp[0] * (temp[0] - 1) / 2);
    count += (temp[1] * (temp[1] - 1) / 2);
    return count;
}

int main(){
    int arr[] = {2, 1, 4, 2};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "The count of Subarrays with even sum is " << countEvenSumSubArray(arr, n);
    return 0;
}

আউটপুট

The count of Subarrays with even sum is 4
  1. সংখ্যার সম ও বিষম স্থানের অঙ্কের যোগফল বের করা C++-তে

  2. C++ ব্যবহার করে একটি সংখ্যার জোড় মুল ফ্যাক্টরের যোগফল বের করা

  3. C++-এ একটি সংখ্যার জোড় ফ্যাক্টরগুলোর যোগফল (Sum of Even Factors)

  4. C++-এ একটি সংখ্যার জোড় ফ্যাক্টরগুলোর যোগফল বের করা (Sum of Even Factors)