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 的对。
将计数的初始值设为 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 是否成立。如果成立,则创建 arr_1[i] 和 arr_2[j] 的对,并将其插入到 set se 中。
否则,检查 arr_2[j]%arr_1[i]==k 是否成立。如果成立,则创建 arr_1[i] 和 arr_2[j] 的对,并将其插入到 set se 中。
计算 count 为 se.size()。用于计算唯一对的数量。
返回 count 作为结果。
示例
#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
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP