양수와 값 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
출력 − 모듈로 연산이 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
출력 − 모듈로 연산이 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 루프를 사용하여 두 배열을 모두 탐색합니다. A%B=k 또는 B%A=k인 set
-
양수 요소와 길이를 size_arr_1 및 size_arr_2로 포함하는 정수 배열 arr_1[] 및 arr_2[]를 사용합니다.
-
정수 k를 취합니다.
-
함수 modulo_pairs(int arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int k)는 두 배열과 그 길이를 모두 취하고 두 배열의 요소에 대한 모듈로 연산이 k를 산출하도록 쌍을 반환합니다.
-
count의 초기값을 0으로 합니다.
-
set
> se를 가져옵니다. 쌍의 . -
arr_1[]을 i=0에서 i
-
각 쌍에 대해 arr_1[i], arr_2[j]가 arr_1[i]>arr_2[j]인지 확인합니다. 그렇다면 arr_1[i]%arr_2[j]==k인지 확인하십시오. true이면 arr_1[i] 및 arr_2[j] 쌍을 만들고 se를 설정하기 위해 삽입합니다.
-
그렇지 않으면 arr_2[j]%arr_1[i]==k인지 확인합니다. true이면 arr_1[i] 및 arr_2[j] 쌍을 만들고 se를 설정하기 위해 삽입합니다.
-
개수를 se.size()로 계산합니다. 고유 쌍 수를 계산합니다.
-
결과로 카운트를 반환합니다.
예시
#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