เราได้รับสองอาเรย์ที่มีจำนวนบวกและค่า 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
เอาต์พุต − จำนวนคู่จากสองอาเรย์ที่ modulo ให้ค่า K คือ 2
คำอธิบาย − คู่คือ (5,7) - (arr_1[2],arr_2[1]) 7%5=2 และ (5,3) - (arr_1[2],arr_2[2]) 5%3=2
อินพุต − arr_1[] = {2,5}; arr_2[] = {3,7}; k=1
เอาต์พุต − จำนวนคู่จากสองอาเรย์ที่ modulo ให้ค่า K คือ 2
คำอธิบาย − คู่คือ (2,3) - (arr_1[0],arr_2[0]) 3%2=1 และ (2,7) - (arr_1[0],arr_2[1]) 7%2=1
แนวทางที่ใช้ในโปรแกรม
ในแนวทางนี้เราจะเดินทางทั้งสองอาเรย์ด้วยลูป FOR เพิ่มคู่เข้า set<pair<int, int> > se ที่ A%B=k หรือ B%A=k โดย A 属于 arr_1 และ B 属于 arr_2 ท้ายสุดขนาดของเซต se คือจำนวนคู่ที่ไม่ซ้ำจากสองอาเรย์ที่ modulo ให้ค่า k
- รับอาเรย์จำนวนเต็ม
arr_1[]และarr_2[]พร้อมความยาวsize_arr_1และsize_arr_2 - รับจำนวนเต็ม
k - ฟังก์ชัน
modulo_pairs(int arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int k)รับทั้งสองอาเรย์และความยาว คืนคู่ที่ modulo ของสมาชิกทั้งสองอาเรย์ให้ค่า k - กำหนดค่าเริ่มต้นของ
countเป็น 0 - สร้าง
set<pair<int, int> > seของคู่<int,int> - เริ่มเดินทาง
arr_1[]จากi=0ถึงi<size_arr_1และarr_2[]จากj=0ถึงj<size_arr_2 - สำหรับแต่ละคู่
arr_1[i], arr_2[j]ตรวจสอบถ้าarr_1[i]>arr_2[j]ถ้าจริงตรวจสอบarr_1[i]%arr_2[j]==kถ้าจริงสร้างคู่ของarr_1[i]และarr_2[j]ใส่เซตse - มิฉะนั้น ตรวจสอบ
arr_2[j]%arr_1[i]==kถ้าจริงสร้างคู่ของarr_1[i]และarr_2[j]ใส่เซตse - คำนวณ
count = se.size()สำหรับจำนวนคู่ที่ไม่ซ้ำ - คืน
count
ตัวอย่างโค้ด 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){
int count = 0;
set<pair<int, int> > se;
for (int i = 0; i < size_arr_2; i++){
for (int j = 0; j < size_arr_1; j++){
if (arr_1[i] > arr_2[j]){
if (arr_1[i] % arr_2[j] == k){
se.insert(make_pair(arr_1[i], arr_2[j]));
}
} else {
if (arr_2[j] % arr_1[i] == k){
se.insert(make_pair(arr_2[j], arr_1[i]));
}
}
}
}
count = se.size();
return count;
}
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