使用 C++ 统计偶数和奇数积的有序对数量


给定一个包含 n 个正数的数组。目标是计算有序对 (arr[x], arr[y]) 的数量,其中 arr[x] 和 arr[y] 的乘积为偶数或奇数。对 (arr[i],arr[j]) 和 (arr[j],arr[i]) 被视为不同的对。

我们将使用两个 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 product 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 product as all elements are even.

下面程序中使用的方案如下

  • 我们使用一个用随机数初始化的整数数组 arr[]。

  • 使用一个变量 n 来存储 Arr[] 的长度。

  • 函数 countPairs(int arr[], int n) 以数组及其长度作为输入,并打印具有偶数和奇数积的对的数量。

  • 使用两个 for 循环遍历数组以获取每对元素。

  • 外部循环从 0<=i<n-1 开始,内部循环从 i<j<n 开始

  • 检查 arr[i]*arr[j]%2==0。将 count1(偶数积对计数)加 2,因为 arr[i],arr[j] 和 arr[j],arr[i] 将是两对。

  • 如果上述条件为假,则将 count2(奇数积对计数)加 2。

  • 在所有循环结束后,count1 将包含具有偶数积的对的总数,count2 将包含具有奇数积的对的总数

  • 打印 count1 和 count2 作为结果。

示例

 在线演示

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

输出

如果我们运行以上代码,它将生成以下输出 −

Even Product pairs: 6
Odd Product pairs: 6

更新于: 2020年8月29日

145 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告