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

সি++-এ [a,b] রেঞ্জে যোগফল পড়ে এমন ট্রিপলেট গণনা

একটি ইন্টিজার অ্যারে Arr[] এবং দুটি ভেরিয়েবল a, b দেওয়া আছে [a,b] রেঞ্জ নির্ধারণ করতে। লক্ষ্য হল যেসব ট্রিপলেটের যোগফল এই [a,b] রেঞ্জের মধ্যে পড়ে, তাদের সংখ্যা বের করা।

তিনটি for লুপ ব্যবহার করা হয়। arr[i]+arr[j]+arr[k] >= a এবং <= b হলে count বাড়ানো হয়। 0<=i<=n-2, i

উদাহরণ

ইনপুট: arr[] = { 1,2,3,4,5 }, N=5, L=2, R=8

আউটপুট: ট্রিপলেট সংখ্যা: ৪

ব্যাখ্যা: যোগফল ২ থেকে ৮-এর মধ্যবর্তী ট্রিপলেট: (1,2,3)→6, (1,2,4)→7, (1,2,5)→8, (1,3,4)→8। মোট ৪টি।

ইনপুট: arr[] = {2,2,2,2,2}, N=5, L=2, R=5

আউটপুট: ট্রিপলেট সংখ্যা: ০

ব্যাখ্যা: সব ট্রিপলেটের যোগফল ৬ যা [2,5] রেঞ্জে নেই।

অ্যাপ্রোচ

  • ইন্টিজার অ্যারে Arr[] নেওয়া হয়।
  • L, R রেঞ্জ ভেরিয়েবল, N দৈর্ঘ্য।
  • countTriplets(int arr[], int n, int a, int b) ফাংশন অ্যারে, দৈর্ঘ্য এবং রেঞ্জ গ্রহণ করে রেঞ্জে যোগফল পড়ে এমন ট্রিপলেট রিটার্ন করে।
  • প্রাথমিক count ০, sum=0।
  • তিনটি নেস্টেড for লুপ: আউটার 0<=i
  • sum = arr[i]+arr[j]+arr[k]। a<=sum<=b হলে count++।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

int countTriplets(int arr[], int n, int a, int b) {
    int count = 0;
    int sum = 0;
    for (int i = 0; i < n-2; i++) {
        for (int j = i+1; j < n-1; j++) {
            for (int k = j+1; k < n; k++) {
                sum = arr[i] + arr[j] + arr[k];
                if (sum >= a && sum <= b) {
                    count++;
                }
            }
        }
    }
    return count;
}

int main() {
    int Arr[] = { 5,4,3,6,8,2 };
    int L = 9, R = 15;
    int N = 6;
    cout << endl << "Number of triplets : " << countTriplets(Arr, N, L, R);
    return 0;
}

আউটপুট

Number of triplets : 14
  1. ফিবোনাচ্চি সংখ্যা যেন করা নোডের ওজন এবং X-এর যোগফল C++-এ

  2. C++ ব্যবহার করে অ্যারেতে একটি সংখ্যার ফ্রিকোয়েন্সি বের করা

  3. C++-এ অ্যারেতে ন্যূনতম সংখ্যা যোগ করে যোগফল জোড় করার পদ্ধতি

  4. C++-এ সম অ্যারে পাজল (Sum Array Puzzle) সমাধান