n সংখ্যক ধনাত্মক সংখ্যার একটি অ্যারে দেওয়া আছে। লক্ষ্য হল অর্ডার্ড পেয়ার (arr[x], arr[y]) গণনা করা যাদের যোগফল জোড় বা বিজোড়। পেয়ার (arr[i],arr[j]) এবং (arr[j],arr[i]) আলাদা গণনা হবে।
দুটি for লুপ দিয়ে সব পেয়ার চেক করা হয়। যোগফল জোড় হলে count1 (জোড় যোগফল বালা পেয়ার) ২ বাড়ানো হয় (কারণ (a,b) এবং (b,a) দুটি পেয়ার)। বিজোড় হলে count2 (বিজোড় যোগফল বালা পেয়ার) ২ বাড়ানো হয়।
উদাহরণ
ইনপুট: Arr[] = { 1,1,2,3 }, N=4
আউটপুট: জোড় যোগফল বালা পেয়ার: ৬, বিজোড় যোগফল বালা পেয়ার: ৬
ব্যাখ্যা: বৈধ বিজোড় যোগফল বালা পেয়ার: (1,1), (1,1), (1,3), (3,1), (1,3), (3,1) = ৬। বৈধ জোড় যোগফল বালা পেয়ার: (1,2), (2,1), (1,2), (2,1), (2,3), (3,2) = ৬।
ইনপুট: Arr[] = { 2,2,2 }, N=3
আউটপুট: জোড় যোগফল বালা পেয়ার: ৬, বিজোড় যোগফল বালা পেয়ার: ০
ব্যাখ্যা: সব উপাদান জোড়, তাই কোনো বিজোড় যোগফল নেই।
অ্যাপ্রোচ
- ইন্টিজার অ্যারে arr[] নেওয়া হয়।
- n ভেরিয়েবলে অ্যারের দৈর্ঘ্য।
countPairs(int arr[], int n)ফাংশন অ্যারে এবং দৈর্ঘ্য গ্রহণ করে জোড় ও বিজোড় যোগফল বালা পেয়ার সংখ্যা প্রিন্ট করে।- দুটি নেস্টেড for লুপ দিয়ে ট্রাভার্স করা হয়।
- sum = arr[i]+arr[j]। sum%2==0 হলে count1+=2, অন্যথায় count2+=2।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
void countPairs(int arr[], int n) {
int count1 = 0; // জোড় যোগফল বালা পেয়ার
int count2 = 0; // বিজোড় যোগফল বালা পেয়ার
int sum = 0;
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
sum = arr[i] + arr[j];
if (sum % 2 == 0) {
count1 += 2;
} else {
count2 += 2;
}
}
}
cout << "Even Sum pairs: " << count1;
cout << endl << "Odd Sum pairs: " << count2;
}
int main() {
int arr[] = { 1,2,3,2 };
int n = sizeof(arr) / sizeof(int);
countPairs(arr, n);
return 0;
}
আউটপুট
Even Sum pairs: 4 Odd Sum pairs: 8