计算来自两个数组的对,其对数组的取模运算在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循环遍历两个数组。将对插入到set <pair <int,int>> se中,其中A%B = k或B%A = k,其中A属于arr_1,B属于arr_2。在set se的最后,大小是两个取模运算结果为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)接受两个数组及其长度,并返回对,以使两个数组的元素的模运算结果为k。

  • 将count的初始值设为0。

  • 取set <pair <int,int>> se; 成对<int,int>。

  • 开始从i = 0到i <size_arr_1遍历arr_1 [],从j = 0到j <size_arr_2遍历arr_2 []。

  • 对于每对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<<"//来自两个取模运算结果为K的数组的对数:"<<modulo_pairs(arr_1, arr_2, size_arr_1, size_arr_2, k);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

//来自两个取模运算结果为K的数组的对数: 2
猜你喜欢