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