আমাদের দুটি পজিটিভ সংখ্যার অ্যারে এবং একটি মান K দেওয়া আছে। লক্ষ্য হল অদ্বিতীয় জোড়া (A,B) বের করা যাতে A%B=K বা B%A=K। এখানে A প্রথম অ্যারে থেকে এবং B দ্বিতীয় অ্যারে থেকে।
উদাহরণ
ইনপুট: arr_1[] = {1,2,5,3,4}, arr_2[] = {7,1,3}, k=2
আউটপুট: ২
ব্যাখ্যা: জোড়া: (5,7) কারণ 7%5=2 এবং (5,3) কারণ 5%3=2।
ইনপুট: arr_1[] = {2,5}, arr_2[] = {3,7}, k=1
আউটপুট: ২
অ্যালগরিদম
- দুটি অ্যারে এবং তাদের আকার ইনপুট নিন।
set<pair<int,int>>দিয়ে অদ্বিতীয় জোড়া সংরক্ষণ করুন।- নেস্টেড লুপে দুটি অ্যারে ট্রাভার্স করুন।
- প্রতিটি জোড়ার জন্য: যদি
arr_1[i] > arr_2[j]হয় তবেarr_1[i] % arr_2[j] == kচেক করুন। অন্যথায়arr_2[j] % arr_1[i] == kচেক করুন। - শর্ত পূরণ হলে সেটে জোড়া ইনসার্ট করুন।
- সেটের আকার ফেরত দিন।
C++ বাস্তবায়ন
#include <bits/stdc++.h>
using namespace std;
int modulo_pairs(int arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int k) {
set<pair<int, int>> se;
for (int i = 0; i < size_arr_1; i++) {
for (int j = 0; j < size_arr_2; j++) {
if (arr_1[i] > arr_2[j]) {
if (arr_1[i] % arr_2[j] == k)
se.insert({arr_1[i], arr_2[j]});
} else {
if (arr_2[j] % arr_1[i] == k)
se.insert({arr_2[j], arr_1[i]});
}
}
}
return se.size();
}
int main() {
int arr_1[] = {2, 7, 1, 9};
int arr_2[] = {4, 10, 3, 10};
int size_arr_1 = sizeof(arr_1) / sizeof(arr_1[0]);
int size_arr_2 = sizeof(arr_2) / sizeof(arr_2[0]);
int k = 3;
cout << "Count of pairs from two arrays whose modulo operation yields K are: "
<< modulo_pairs(arr_1, arr_2, size_arr_1, size_arr_2, k);
return 0;
}
আউটপুট
Count of pairs from two arrays whose modulo operation yields K are: 2