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

数値の1つがC++で他の2つの合計として記述できるようにトリプレットを数えます


長さnの整数の配列Arr[]が与えられます。目標は、任意の2つの数の合計が3番目の数と等しくなるように、トリプレット(Arr [i]、Arr [j]、Arr [k])の数を見つけることです。

a + b =c、ここでa、b、cは、0 <=i

入力

arr[]= { 1,2,2,3,4 }, N=5

出力

Number of triplets: 4

説明

arr [x] + arr [y] =arr[z]のトリプレット。

Arr{}=[ 1,2,2,3,4 ] =(1,2,3) → 1+2=3
Arr{}=[ 1,2,2,3,4 ] =(1,2,3) → 1+2=3
Arr{}=[ 1,2,2,3,4 ] =(1,3,4) → 1+3=4
Arr{}=[ 1,2,2,3,4 ] =(2,2,4) → 2+2=4

トリプレットの合計:4

入力

arr[]= {2,2,2,2,2}, N=5

出力

Number of triplets: 0

説明

2つの数値ごとにsum=4があり、これはthird=2と等しくありません。

トリプレットの合計:0

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

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

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

  • 関数countTriplets(int arr []、int n)は配列を取り、その長さは、数値の1つが他の2つの合計として記述できるトリプレットを返します

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

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

  • 0 <=i

  • arr [i] + arr [j] ==arr[k]またはarr[i]+ arr [k] ==arr[j]またはarr[k]+ arr [j] ==arr[i]かどうかを確認します。真の増分カウント。

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

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

#include <bits/stdc++.h>
using namespace std;
int countTriplets(int arr[], int n){
   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++){
            if(arr[i]+arr[j]==arr[k] || arr[j]+arr[k]==arr[i] || arr[k]+arr[i]==arr[j]){                   count++;
             }
         }
      }
   }
   return count;
}
int main(){
   int Arr[]={ 1,2,2,3,4 };
   int N=5; //length of array
   cout <<endl<< "Number of triplets : "<<countTriplets(Arr,N);
   return 0;
}

出力

Number of triplets: 4

  1. 2つの合計がC++の3番目の要素に等しくなるようなトリプレットを見つけます

    n個の数の配列があるとします。 2つの要素の合計が3番目の要素と同じになるように、3つの数値を見つける必要があります。したがって、配列が[5、32、1、7、10、50、19、21、2]のような場合、出力は21、2、19になります。そのような要素が見つからない場合は、そのメッセージを表示します。 これを解決するために、次のようにいくつかの手順を実行します- 指定された配列を並べ替える 次に、最後の要素から最大の要素の修正を開始し、配列をトラバースして、合計が3番目の要素になる他の2つの数値を見つけます。 2つのポインタjとkを取ります。jは最初から、kは最後から、i-1から2

  2. 数値がC++で2つの豊富な数値の合計として表現できるかどうかを確認します

    番号があるとします。これを2つの過剰数の合計として表す必要があります。はいの場合は数値を出力し、そうでない場合は-1を出力します。数は過剰数と呼ばれ、その数のすべての適切な除数の合計であり、sum(n)は数の値よりも大きいことで示されます。 これを解決するために、すべての過剰数をセットに格納し、指定された数nに対して、i =1からnのループを実行し、nと(n – i)が過剰かどうかを確認します。 例 #include <iostream> #include <set> #define N 100005 using namespace std; set<int&g