使用 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
广告