Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số lượng các cặp có thứ tự với Sản phẩm Chẵn và Lẻ trong C ++


Chúng ta được cung cấp một mảng gồm n số dương, mục tiêu là đếm các cặp có thứ tự (arr [x], arr [y]) với tích của arr [x] và arr [y] chẵn hoặc lẻ. Cặp (arr [i], arr [j]) và (arr [j], arr [i] được tính là riêng biệt.

Chúng tôi sẽ duyệt qua mảng bằng cách sử dụng hai vòng lặp for cho mỗi số cặp. Bây giờ, hãy tính sản phẩm, nếu nó là số gia chẵn bằng 2 cho các sản phẩm chẵn thì số gia tăng bằng 2 cho các sản phẩm lẻ.

Hãy cùng hiểu với các ví dụ.

Đầu vào - Arr [] ={1,1,2,3} N =4

Đầu ra - Số lượng cặp sản phẩm chẵn:6 Số lượng cặp sản phẩm lẻ:6

Giải thích - Các cặp sản phẩm lẻ hợp lệ là -

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

Đầu vào - Arr [] ={2,2,2} N =3

Đầu ra - Đếm các cặp sản phẩm chẵn - 6 Đếm các cặp sản phẩm lẻ - 0

Giải thích - Các cặp sản phẩm chẵn hợp lệ là -

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.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy một mảng số nguyên arr [] được khởi tạo với các số ngẫu nhiên.

  • Lấy một biến n lưu trữ độ dài của Arr [].

  • Hàm countPairs (int arr [], int n) nhận một mảng, độ dài của nó làm đầu vào và in ra số lượng các cặp có tích chẵn và lẻ.

  • Traverse mảng sử dụng hai vòng lặp for cho mỗi phần tử của cặp.

  • Vòng ngoài từ 0 <=i

  • Kiểm tra xem arr [i] * arr [j]% 2 ==0 hay không. Số tăng 1 để đếm các cặp sản phẩm chẵn bằng 2 như arr [i], arr [j] và arr [j], arr [i] sẽ là hai cặp.

  • Nếu điều kiện trên là sai số gia tăng 2 cho các cặp sản phẩm lẻ bằng 2.

  • Ở cuối tất cả các vòng đếm 1 sẽ có tổng số các cặp có tích chẵn và đếm 2 sẽ có tổng số các cặp có tích lẻ

  • In kết quả là count1 và count2.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Even Product pairs: 6
Odd Product pairs: 6