Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

모듈로 연산이 C++에서 K를 산출하는 두 배열에서 쌍을 셉니다.

<시간/>

양수와 값 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> se에 쌍을 삽입합니다. 여기서 A는 arr_1에 속하고 B는 arr_2에 속합니다. 세트 se의 끝 크기는 모듈로 연산이 k를 산출하는 두 배열의 고유 쌍 수입니다.

  • 양수 요소와 길이를 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