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

C++で指定された数に等しい積を持つトリプレットの数を数えます


長さがnで数値がMの整数の配列Arr[]が与えられます。この配列には、正の整数のみが含まれています。目標は、積がMに等しいArr[]の要素のトリプレットをカウントすることです。

これを行うには、3つのforループを使用します。 arr [x] * arr [y] * arr [z] =Mかつx!=y!=zの場合、カウントをインクリメントします。 (0 <=x、y、z

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

入力

arr[]= { 1,2,3,0,2,4 }, M=24

出力

Number of triplets with product M: 2

説明

Triplets with arr[x]*arr[y]*arr[z]==M.
Arr{}=[ 1,2,3,0,2,4 ] =(2,3,4) → 2*3*4=24
Arr{}=[ 1,2,3,0,2,4 ] =(3,2,4) → 3*2*4=24
Total triplets: 2

入力

arr[]= {2,2,2,2,2}, M=6

出力

Number of triplets with product M: 0

説明

Every triplet has product equal to 8
Total triplets: 0

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

  • 乱数で初期化された整数配列Arr[]を使用します。

  • 変数Nは、Arr[]の長さを格納します。

  • 関数productisM(int arr []、int n、int m)は配列を取り、その長さは積がmに等しいトリプレットを返します。

  • トリプレットの数として、初期変数カウントを0とします。

  • トリプレットの各要素に対して3つのforループを使用して配列をトラバースします。

  • 0 <=i

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

  • すべてのループの終わりに、カウントには、条件を満たすトリプレットの総数が含まれます。

  • 結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int productisM(int arr[], int n, int m){
   int count = 0;
   for (int i = 0; i < n-2; i++){
      for (int j = i+1; j < n-1; j++){
         for (int k = j+1; k < n; k++){
            int prod=arr[i]*arr[j]*arr[k];
            if(prod==m)
               { count++; }
         }
      }
   }
   return count;
}
int main(){
   int Arr[]={ 1,2,3,0,2,4 };
   int N=6; //length of array
   int M=24;
   cout <<endl<< "Number of triplets with product M : "<<productisM(Arr,N,M);
   return 0;
}

出力

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

Number of triplets with product M: 4

  1. C++で指定された数の配列要素の平均の発生をカウントします

    整数要素と整数numを含む配列arr[]が与えられます。目標は、各要素arr [i]とnumの平均を求め、その平均が元の配列に出現した回数のカウントを出力することです。 配列arr[]が[5、2、3]で、numが2の場合、平均は[3、2、2]になります。arr[]のオカレンスは[1,1,1]です。 例 入力 arr[] = { 1, 6, 4, 3, 6, 4 } num=2 出力 1 2 1 0 2 1 指定された数の配列要素の平均の発生数は-5です 説明 The num is 4 and averages with all other numbers in arr[] is : [

  2. C++でマンハッタン距離に等しい距離のパスをカウントします

    2D座標系上の2つの点を(x1、y1)および(x2、y2)として表す変数x1、x2、y1、y2が与えられます。目標は、これら2つのポイント間のマンハッタン距離に等しい距離を持つすべてのパスを見つけることです。 マンハッタン距離 マンハッタン2点(x1、y1)と(x2、y2)の間の距離は- MD =| x1 – x2 | + | y1 – y2 | A =| x1 –x2|を取りましょうおよびB=| y1 – y2 | マンハッタン距離がMDに等しいすべてのパスでは、エッジが(A + B)としてカウントされます。水平エッジとB垂直エッジ。したがって、2つのグループに分割された(A +