C ++でarr[i]がarr[j]で割り切れる、またはarr[j]がarr[i]で割り切れるようなペア(i、j)の数を数えます。
N個の要素の配列arr[]が与えられます。目標は、arr[i]がarr[j]で割り切れる、またはarr[j]がarr[i]とi!=jで割り切れるような、すべての有効なインデックスのペア(i、j)の数を見つけることです。
これを行うには、ペアの数ごとに2つのforループを使用して配列arr []をトラバースし、iの場合にarr [i]%arr [j] ==0またはarr[j]%arr [i]==0かどうかを確認します。 !=j。ペアの真の増分カウントの場合。
例を挙げて理解しましょう。
入力 − arr [] ={2,4,3,6} N =4
出力 −有効なペアの数− 3
説明 −有効なペアは−
Arr[0] & Arr[1] → (2,4) here 4%2==0 0!=1 Arr[0] & Arr[1] → (2,6) here 6%2==0 0!=3 Arr[2] & Arr[3] → (3,6) here 6%3==0 2!=3
入力 − arr [] ={2,5,7,9,11} N =5
出力 −有効なペアの数− 0
説明 −他を完全に分割する数はありません。ペアを形成することはできません。
以下のプログラムで使用されているアプローチは次のとおりです
-
乱数で初期化された整数配列Arr[]を使用します。
-
Arr[]の長さを格納する変数nを取ります。
-
関数countPairs(int arr []、int n)は配列を受け取り、その長さを入力として受け取り、有効で目的の条件を満たすペアを返します。
-
ペアの要素ごとに2つのforループを使用して配列をトラバースします。
-
0 <=i
-
arr [i]%arr [j] ==0またはarr[j]%arr [i]==0かどうかを確認します。いずれかの条件が真の場合、カウントを1回インクリメントします。
-
すべてのループの終わりに、カウントには有効なペアの総数が含まれます
-
結果としてカウントを返します。
例
#include <bits/stdc++.h> using namespace std; int countPairs(int arr[], int n){ // Count of pairs int count = 0; for (int i = 0; i < n-1; i++){ for (int j = i + 1; j < n; j++){ if(arr[i]%arr[j]==0 || arr[j]%arr[i]==0) { count++; } } } return count; } int main(){ int Arr[] = { 2,3,4,5,6 }; int len = sizeof(Arr) / sizeof(Arr[0]); cout << "Count of number of pairs : "<< countPairs(Arr, len); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
Count of number of pairs : 3
-
C++で数値を除算する数値の桁数を検索します
番号が与えられていると仮定します。数を均等に分割する数の桁数を数える必要があります。数値が1012で、結果が3であるとします。1012を均等に分割する3桁の1、1、および2があります。 これを解決するために、モジュラス演算を使用して数値の各桁を見つけ、数値がその桁で割り切れるかどうかを確認します。割り切れる場合は、カウンターを増やします。数字が0の場合は、その数字を無視します。 例 #include<iostream> using namespace std; int countDivDigit(int num) { int c
-
C ++を使用して、XORが0になるような配列内のペアの数を見つけます。
n個の要素の配列があるとします。 XORが0になる配列内のペアの数を見つける必要があります。XORが0のペア(x、y)の場合、x=yです。これを解決するために、配列を並べ替えることができます。次に、2つの連続する要素が同じである場合は、カウントを増やします。すべての要素が同じである場合、最後のカウントはカウントされない場合があります。その場合、最後の要素と最初の要素が同じであるかどうかを確認し、同じである場合は、カウントを1つ増やします。 例 #include<iostream> #include<algorithm> using namespace std; in