একটি অ্যারে দেওয়া থাকলে, কতটি জোড়ার যোগফল ৪ দিয়ে বিভাজ্য তা গণনা করতে হবে। এটি উপরের সমস্যায় k=4 নির্দিষ্ট করে 스페শালাইজড সংস্করণ।
উদাহরণ
ইনপুট: arr = [4, 1, 2, 0, 2]
বৈধ জোড়া: (4,0), (2,2) → মোট 2টি
অ্যালগরিদম (O(n) মডুলো ৪ ফ্রিকোয়েন্সি)
- রিমাইন্ডার ০, ১, ২, ৩ এর ফ্রিকোয়েন্সি গণনা করুন।
- বৈধ জোড়া কম্বিনেশন:
- (০, ০):
freq[0] * (freq[0]-1) / 2 - (২, ২):
freq[2] * (freq[2]-1) / 2 - (১, ৩):
freq[1] * freq[3]
- (০, ০):
- সর্বমোট যোগফল রিটার্ন করুন।
C++ কোড উদাহরণ
#include <iostream>
using namespace std;
int countPairsDivBy4(int arr[], int n) {
int freq[4] = {0};
for (int i = 0; i < n; i++)
freq[arr[i] % 4]++;
int count = 0;
count += freq[0] * (freq[0] - 1) / 2; // (0,0)
count += freq[2] * (freq[2] - 1) / 2; // (2,2)
count += freq[1] * freq[3]; // (1,3)
return count;
}
int main() {
int arr[] = {4, 1, 2, 0, 2};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Count: " << countPairsDivBy4(arr, n);
return 0;
}
ইনপুট
[4, 1, 2, 0, 2]
আউটপুট
2