モジュロ演算でC++でKが生成される2つの配列からペアをカウントします
正の数と値Kを含む2つの配列が与えられます。目標は、タイプ(A、B)のペアがA%B =KまたはB%A =Kであり、Aがに属するような配列の要素の一意のペアを見つけることです。最初のアレイとBは2番目のアレイに属します。
例を挙げて理解しましょう
入力 − arr_1 [] ={1,2,5,3,4}; arr_2 [] ={7,1,3}; k =2
出力 −モジュロ演算でKが得られる2つの配列からのペアの数は− 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
説明 −ペアは(2,3)-(arr_1 [0]、arr_2 [0])3%2 =1および(2,7)-(arr_1 [0]、arr_2 [1])7%2 =1
以下のプログラムで使用されているアプローチは次のとおりです
このアプローチでは、forループを使用して両方の配列をトラバースします。ペアをset
-
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]のペアを作成し、挿入して設定します。
-
それ以外の場合は、arr_2 [j]%arr_1 [i]==kかどうかを確認します。 trueの場合、arr_1[i]とarr_2[j]のペアを作成し、挿入して設定します。
-
カウントを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
-
C++プログラムで2つの配列から要素を順番に選択することによる最大合計
この問題では、2つの配列arr1[]とarr2[]、および2つの数値NとMが与えられます。 Nは、arr1から取得した要素の数を示します。 Mは、arr2から取得した要素の数を示します。 arr1[i]からarr2[i]までの要素の1つを選択する必要があります。 合計は最大になりますが、最大Nはarr1から取得でき、Mはarr2から取得できます。 私たちのタスクは、C ++で2つの配列から要素を順番に選択することにより、最大合計を見つけるプログラムを作成することです。 問題を理解するために例を見てみましょう 入力 arr1[] = {5, 1, 6, 2, 8, 9} arr2[
-
合計がC++の指定された値xに等しい2つのBSTからペアをカウントします
入力として2つの二分探索木と変数xが与えられます。目標は、ノードの値の合計がxに等しくなるように、各ツリーからノードのペアを見つけることです。 BST_1からノード1を取得し、BST_2からノード2を取得して、両方のデータ部分を追加します。 sum=xの場合。インクリメントカウント。 例を挙げて理解しましょう。 入力 出力 −合計が特定の値xに等しい2つのBSTからのペアの数は− 1 説明 −ペアは(8,6) 入力 出力 −合計が特定の値xに等しい2つのBSTからのペアの数は− 2 説明 −ペアは(5,15)と(4,16) 以下のプログラムで使用されているアプ