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

C++で偶数と奇数の合計を持つ順序対の数をカウントします


n個の正の数の配列が与えられます。目標は、順序対(arr [x]、arr [y])をarr[x]とarrの合計でカウントすることです。 [y]は偶数または奇数です。ペア(arr [i]、arr [j])と(arr [j]、arr[i]は別々にカウントされます。

ペアの数ごとに2つのforループを使用して配列をトラバースします。次に、合計を計算します。偶数の合計の場合は偶数の増分カウントが2で、奇数の合計の場合は増分カウントが2です。

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

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

出力 −偶数の積の合計のカウント− 6奇数の合計のペアのカウント− 6

説明 −有効な奇数の合計ペアは−

Arr[0] & Arr[1] → (1,1) Arr[1] & Arr[0] → (1,1) count=2
Arr[0] & Arr[3] → (1,3) Arr[3] & Arr[0] → (3,1) count=2
Arr[1] & Arr[3] → (1,3) Arr[3] & Arr[1] → (3,1) count=2 Total=6
Valid even sum pairs are:
Arr[0] & Arr[2] → (1,2) Arr[2] & Arr[0] → (2,1) count=2
Arr[1] & Arr[2] → (1,2) Arr[2] & Arr[1] → (2,1) count=2
Arr[2] & Arr[3] → (2,3) Arr[3] & Arr[2] → (3,2) count=2 Total=6

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

出力 −偶数の合計ペアの数− 6奇数の合計ペアの数− 0

説明 −有効な偶数の製品ペアは−

Arr[0] & Arr[1] → (2,2) Arr[1] & Arr[0] → (2,2) count=2
Arr[1] & Arr[2] → (2,2) Arr[2] & Arr[1] → (2,2) count=2
Arr[2] & Arr[3] → (2,2) Arr[3] & Arr[2] → (2,2) count=2 Total=6
No odd sum as all elements are even.

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

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

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

  • 関数countPairs(int arr []、int n)は配列を受け取り、その長さを入力として受け取り、偶数と奇数の合計を持つペアの数を出力します。

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

  • 0 <=i

  • arr [i] + arr [j]%2==0かどうかを確認します。 arr [i]、arr[j]およびarr[j]、arr [i]が2ペアになるため、偶数の合計ペアのカウントのcount1を2ずつインクリメントします。

  • 上記の条件が偽の場合、奇数の合計ペアのcount2を2ずつインクリメントします。

  • すべてのループの終わりに、count1には偶数の合計を持つペアの総数があり、count2には奇数の合計を持つペアの総数があります

  • 結果としてcount1とcount2を出力します。

#include <bits/stdc++.h>
using namespace std;
void countPairs(int arr[], int n){
   int count1=0; //even sum pairs
   int count2=0; //odd sum pairs
   int sum=0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         sum=arr[i]+arr[j];
         if(sum%2==0) //sum is even
            { count1+=2; } //(a,b) and (b,a) as two pairs
         else
            { count2+=2; }
      }
   }
   cout<<"Even Sum pairs: "<<count1;
   cout<<endl<<"Odd Sum pairs: "<<count2;
}
int main(){
   int arr[] = { 1,2,3,2 };
   int n = sizeof(arr) / sizeof(int);
   countPairs(arr, n);
   return 0;
}

出力

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

Even Sum pairs: 4
Odd Sum pairs: 8

  1. C++の配列内の偶数要素と奇数要素の数をカウントします

    このチュートリアルでは、配列内の偶数要素と奇数要素の数を見つけるプログラムについて説明します。 このために、アレイが提供されます。私たちのタスクは、指定された配列の偶数要素と奇数要素の数を計算することです。 例 #include<iostream> using namespace std; void CountingEvenOdd(int arr[], int arr_size){    int even_count = 0;    int odd_count = 0;    //looping through the

  2. C++で奇数と偶数のノードを含むすべてのレベルを出力します

    この問題では、ツリーが与えられます。そして、偶数のノードと奇数のノードを含むすべてのレベルを印刷する必要があります。 概念をよりよく理解するために例を見てみましょう 出力- Levels with odd number of nodes: 1, 3, 4 Levels with even number of nodes: 2 説明 −第1レベルには1つの要素(奇数)、第2レベルには2つの要素(偶数)、第3レベルには3つの要素(奇数)、第4レベルには1つの要素(偶数)が含まれます。 さて、この問題を解決するために。各レベルでノードの数を見つけ、それに応じて偶数-奇数レベルを出力す