C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でarr[i]* arr [j]> arr [i] + arr [j]となるようにペア(i、j)の数を数えます


n個の正の数の配列が与えられます。目標は、arr [i] * arr [j]> arr [i]のように順序対(i、j)をカウントすることです。 +arr[j]および0<=i

ペアの数ごとに2つのforループを使用して配列をトラバースします。次に、arr[i]とarr[j]の合計と積を計算します。積が合計増分カウントより大きい場合。

例を挙げて理解しましょう。

入力 − arr [] ={1,1,2,3} N =4

出力 −ペアの数− 1

説明 −有効なペアは−(2,3)

2*3=6 > 2+3=5

入力 − arr [] ={2,2,2} N =3

出力 −ペアの数− 0

説明 − 2*2と2+2の両方が4です。product>sum

のペアはありません

以下のプログラムで使用されているアプローチは次のとおりです

  • 正の数で初期化された整数配列arr[]を取ります。

  • Arr[]の長さを格納する変数nを取ります。

  • 関数countPairs(int arr []、int n)は配列を受け取り、その長さを入力として受け取り、ペアの数をproduct>sumで出力します。

  • ペアの要素ごとに2つのforループを使用して配列をトラバースします。

  • 0 <=i

  • arr [i] * arr [j]> arr [i] +arr[j]かどうかを確認します。 trueの場合はカウントをインクリメントします。

  • すべてのループの終わりに、カウントには、積>合計

    を持つペアの総数が含まれます。
  • 結果としてカウントを返します。

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int countPairs(int arr[], int n){
   int count=0;
   int sum=0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         if(arr[i]*arr[j]>arr[i]+arr[j]) //condition
            { count++; }
      }
   }
   return count;
}
int main(){
   int arr[] = { 1,2,3,2 };
   int len = sizeof(arr) / sizeof(int);
   cout<<"Count of number of pairs :"<<countPairs(arr, len);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of number of pairs :2

  1. C++で数値を除算する数値の桁数を検索します

    番号が与えられていると仮定します。数を均等に分割する数の桁数を数える必要があります。数値が1012で、結果が3であるとします。1012を均等に分割する3桁の1、1、および2があります。 これを解決するために、モジュラス演算を使用して数値の各桁を見つけ、数値がその桁で割り切れるかどうかを確認します。割り切れる場合は、カウンターを増やします。数字が0の場合は、その数字を無視します。 例 #include<iostream> using namespace std;    int countDivDigit(int num) {    int c

  2. C ++を使用して、XORが0になるような配列内のペアの数を見つけます。

    n個の要素の配列があるとします。 XORが0になる配列内のペアの数を見つける必要があります。XORが0のペア(x​​、y)の場合、x=yです。これを解決するために、配列を並べ替えることができます。次に、2つの連続する要素が同じである場合は、カウントを増やします。すべての要素が同じである場合、最後のカウントはカウントされない場合があります。その場合、最後の要素と最初の要素が同じであるかどうかを確認し、同じである場合は、カウントを1つ増やします。 例 #include<iostream> #include<algorithm> using namespace std; in