Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các cặp từ hai mảng có hoạt động mô-đun sinh ra K trong C ++

Ta được cho hai mảng chứa các số dương và một giá trị K. Mục đích là tìm các cặp phần tử duy nhất của mảng sao cho các cặp kiểu (A, B) có A% B =K hoặc B% A =K và A thuộc về mảng đầu tiên và B thuộc mảng thứ hai.

Hãy cho chúng tôi hiểu với các ví dụ

Đầu vào - arr_1 [] ={1,2,5,3,4}; arr_2 [] ={7,1,3}; k =2

Đầu ra - Đếm các cặp từ hai mảng có hoạt động mô đun tạo ra K là - 2

Giải thích - Các cặp là (5,7) - (arr_1 [2], arr_2 [1]) 7% 5 =2 và (5,3) - (arr_1 [2], arr_2 [2]) 5% 3 =2

Đầu vào - arr_1 [] ={2,5}; arr_2 [] ={3,7}; k =1

Đầu ra - Đếm các cặp từ hai mảng có hoạt động mô đun tạo ra K là - 2

Giải thích - Các cặp là (2,3) - (arr_1 [0], arr_2 [0]) 3% 2 =1 và (2,7) - (arr_1 [0], arr_2 [1]) 7% 2 =1

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Trong cách tiếp cận này, chúng ta sẽ duyệt qua cả hai mảng bằng vòng lặp for. Chèn các cặp để đặt > se trong đó A% B =k hoặc B% A =k, trong đó A thuộc arr_1 và B thuộc arr_2. Ở kích thước cuối cùng của tập hợp se là số lượng các cặp duy nhất từ ​​hai mảng có hoạt động mô-đun sinh ra k.

  • Lấy mảng số nguyên arr_1 [] và arr_2 [] với các phần tử dương và độ dài là size_arr_1 và size_arr_2.

  • Lấy số nguyên k.

  • Hàm modulo_pairs (int arr_1 [], int arr_2 [], int size_arr_1, int size_arr_2, int k) nhận cả mảng và độ dài của chúng và trả về các cặp sao cho phép toán modulo của các phần tử của cả hai mảng mang lại k.

  • Lấy giá trị ban đầu của số đếm là 0.

  • Lấy bộ > se; của các cặp .

  • Bắt đầu duyệt arr_1 [] từ i =0 đến i

  • Đối với mỗi cặp arr_1 [i], arr_2 [j], hãy kiểm tra xem arr_1 [i]> arr_2 [j]. Nếu có, hãy kiểm tra xem arr_1 [i]% arr_2 [j] ==k. Nếu đúng, hãy tạo một cặp arr_1 [i] và arr_2 [j] và chèn để đặt se.

  • Sau đó, hãy kiểm tra xem arr_2 [j]% arr_1 [i] ==k. Nếu đúng, hãy tạo một cặp arr_1 [i] và arr_2 [j] và chèn để đặt se.

  • Tính số đếm dưới dạng se.size (). Để biết số lượng các cặp duy nhất.

  • Kết quả là số lượt trả lại.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of pairs from two arrays whose modulo operation yields K are: 2