Open In App

Count number of ordered pairs with Even and Odd Product

Improve
Improve
Like Article
Like
Save
Share
Report

Given an array of n positive numbers, the task is to count number of ordered pairs with even and odd product. Ordered pairs means (a, b) and (b,a) will be considered as different.

Examples: 

Input: n = 3, arr[] = {1, 2, 7} 
Output: Even product Pairs = 4, Odd product Pairs = 2 
The ordered pairs are (1, 2), (1, 7), (2, 1), (7, 1), (2, 7), (7, 2) 
Pairs with Odd product: (1, 7), (7, 1) 
Pairs with Even product: (1, 2), (2, 7), (2, 1), (7, 2)

Input: n = 6, arr[] = {2, 4, 5, 9, 1, 8} 
Output: Even product Pairs = 24, Odd product Pairs = 6 

Brute Force Approach:

A brute force approach to solve this problem would be to consider all possible pairs of numbers (a, b) from the given array and check whether their product is even or odd. If it is even, increment the count of even product pairs and if it is odd, increment the count of odd product pairs. Since we need to consider all possible pairs.

Below is implementation of the above approach:

C++




#include <bits/stdc++.h>
using namespace std;
 
// Function to count the number of ordered pairs with even and odd product
void countProductPairs(int arr[], int n, int& evenPairs, int& oddPairs)
{
    for(int i=0; i<n; i++){
        for(int j=i+1; j<n; j++){
            if(arr[i]*arr[j] % 2 == 0){
                evenPairs++;
            } else {
                oddPairs++;
            }
        }
    }
}
 
// Driver code
int main()
{
    int n = 3;
    int a[] = { 1, 2, 7 };
    int evenPairs = 0, oddPairs = 0;
 
    countProductPairs(a, n, evenPairs, oddPairs);
 
    cout << "Even Product Pairs = " << evenPairs * 2 << endl;
    cout << "Odd Product Pairs = " << oddPairs  * 2 << endl;
 
    return 0;
}


Java




import java.util.*;
 
public class Main {
 
    // Function to count the number of ordered pairs with even and odd product
    static void countProductPairs(int[] arr, int n, int[] pairs) {
        int evenPairs = 0;
        int oddPairs = 0;
 
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                if (arr[i] * arr[j] % 2 == 0) {
                    evenPairs++;
                } else {
                    oddPairs++;
                }
            }
        }
 
        pairs[0] = evenPairs * 2;
        pairs[1] = oddPairs * 2;
    }
 
    // Driver code
    public static void main(String[] args) {
        int n = 3;
        int[] arr = {1, 2, 7};
        int[] pairs = new int[2];
 
        countProductPairs(arr, n, pairs);
 
        System.out.println("Even Product Pairs = " + pairs[0] );
        System.out.println("Odd Product Pairs = " + pairs[1]);
    }
}


Python3




# Function to count the number of ordered pairs with even and odd product
def countProductPairs(arr, n):
    evenPairs = 0
    oddPairs = 0
 
    for i in range(n):
        for j in range(i+1, n):
            if arr[i]*arr[j] % 2 == 0:
                evenPairs += 1
            else:
                oddPairs += 1
 
    return (evenPairs, oddPairs)
 
# Driver code
n = 3
a = [1, 2, 7]
evenPairs, oddPairs = countProductPairs(a, n)
 
print("Even Product Pairs = ", evenPairs * 2)
print("Odd Product Pairs = ", oddPairs * 2)


C#




using System;
 
public class Program {
    // Function to count the number of ordered pairs with
    // even and odd product
    static void CountProductPairs(int[] arr, int n,
                                  out int evenPairs,
                                  out int oddPairs)
    {
        evenPairs = 0;
        oddPairs = 0;
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                if ((arr[i] * arr[j]) % 2 == 0) {
                    evenPairs++;
                }
                else {
                    oddPairs++;
                }
            }
        }
    }
    // Driver code
    static void Main(string[] args)
    {
        int n = 3;
        int[] a = { 1, 2, 7 };
        int evenPairs, oddPairs;
 
        CountProductPairs(a, n, out evenPairs,
                          out oddPairs);
 
        Console.WriteLine("Even Product Pairs = "
                          + (evenPairs * 2));
        Console.WriteLine("Odd Product Pairs = "
                          + (oddPairs * 2));
    }
}
// This code is contributed by user_dtewbxkn77n


Javascript




// Function to count the number of ordered pairs with even and odd product
function countProductPairs(arr, n, evenPairs, oddPairs) {
    for(let i=0; i<n; i++){
        for(let j=i+1; j<n; j++){
            if(arr[i]*arr[j] % 2 == 0){
                evenPairs++;
            } else {
                oddPairs++;
            }
        }
    }
}
 
// Driver code
let n = 3;
let a = [ 1, 2, 7 ];
let evenPairs = 0, oddPairs = 0;
 
countProductPairs(a, n, evenPairs, oddPairs);
 
console.log("Even Product Pairs = " + evenPairs * 2);
console.log("Odd Product Pairs = " + oddPairs  * 2);


Output

Even Product Pairs = 4
Odd Product Pairs = 2

Time Complexity: O(N^2)

Auxiliary Space: O(1)

Approach:

The product of two numbers is odd only if both are numbers are odd. Therefore: 

Number of odd product pairs = (count of odd numbers) * (count of odd numbers – 1)

And the number of even product pairs will be an inversion of number of odd product pairs. Therefore:

Number of even product pairs = Total Number of pairs – Number of odd product pairs

Below is the implementation of above approach: 

C++




// C++ implementation of the above approach
#include <bits/stdc++.h>
using namespace std;
 
// function to count odd product pair
int count_odd_pair(int n, int a[])
{
    int odd = 0, even = 0;
 
    for (int i = 0; i < n; i++) {
 
        // if number is even
        if (a[i] % 2 == 0)
            even++;
 
        // if number is odd
        else
            odd++;
    }
 
    // count of ordered pairs
    int ans = odd * (odd - 1);
 
    return ans;
}
 
// function to count even product pair
int count_even_pair(int odd_product_pairs, int n)
{
    int total_pairs = (n * (n - 1));
    int ans = total_pairs - odd_product_pairs;
    return ans ;
}
 
// Driver code
int main()
{
 
    int n = 6;
    int a[] = { 2, 4, 5, 9, 1, 8 };
 
    int odd_product_pairs = count_odd_pair(n, a);
 
    int even_product_pairs = count_even_pair(
        odd_product_pairs, n);
 
    cout << "Even Product Pairs = "
         << even_product_pairs
         << endl;
    cout << "Odd Product Pairs= "
         << odd_product_pairs
         << endl;
 
    return 0;
}


Java




// Java  implementation of the above approach
import java.io.*;
 
class GFG {
     
     
// function to count odd product pair
static int count_odd_pair(int n, int a[])
{
    int odd = 0, even = 0;
 
    for (int i = 0; i < n; i++) {
 
        // if number is even
        if (a[i] % 2 == 0)
            even++;
 
        // if number is odd
        else
            odd++;
    }
 
    // count of ordered pairs
    int ans = odd * (odd - 1);
 
    return ans;
}
 
// function to count even product pair
static int count_even_pair(int odd_product_pairs, int n)
{
    int total_pairs = (n * (n - 1));
    int ans = total_pairs - odd_product_pairs;
    return ans;
}
 
// Driver code
    public static void main (String[] args) {
 
        int n = 6;
        int []a = { 2, 4, 5, 9, 1, 8 };
 
        int odd_product_pairs = count_odd_pair(n, a);
 
        int even_product_pairs = count_even_pair(
            odd_product_pairs, n);
 
        System.out.println( "Even Product Pairs = "+
            even_product_pairs );
          
        System.out.println("Odd Product Pairs= "+
             odd_product_pairs );
     
    }
}
//This Code is Contributed by ajit


Python3




# Python3 implementation of
# above approach
 
# function to count odd product pair
def count_odd_pair(n, a):
    odd = 0
    even = 0
    for i in range(0,n):
         
        # if number is even
        if a[i] % 2==0:
            even=even+1
        # if number is odd
        else:
            odd=odd+1
     
    # count of ordered pairs
    ans = odd * (odd - 1)
    return ans
 
# function to count even product pair
def count_even_pair(odd_product_pairs, n):
    total_pairs = (n * (n - 1))
    ans = total_pairs - odd_product_pairs
    return ans
 
#Driver code
if __name__=='__main__':
    n = 6
    a = [2, 4, 5, 9, 1 ,8]
 
    odd_product_pairs = count_odd_pair(n, a)
    even_product_pairs = (count_even_pair
                       (odd_product_pairs, n))
 
    print("Even Product Pairs = "
          ,even_product_pairs)
    print("Odd Product Pairs= "
          ,odd_product_pairs)
 
# This code is contributed by
# Shashank_Sharma


C#




// C#  implementation of the above approach
using System;
 
public class GFG{
     
         
// function to count odd product pair
static int count_odd_pair(int n, int []a)
{
    int odd = 0, even = 0;
 
    for (int i = 0; i < n; i++) {
 
        // if number is even
        if (a[i] % 2 == 0)
            even++;
 
        // if number is odd
        else
            odd++;
    }
 
    // count of ordered pairs
    int ans = odd * (odd - 1);
 
    return ans;
}
 
// function to count even product pair
static int count_even_pair(int odd_product_pairs, int n)
{
    int total_pairs = (n * (n - 1));
    int ans = total_pairs - odd_product_pairs;
    return ans;
}
 
// Driver code
     
static public void Main (){
        int n = 6;
        int []a = { 2, 4, 5, 9, 1, 8 };
 
        int odd_product_pairs = count_odd_pair(n, a);
 
        int even_product_pairs = count_even_pair(
            odd_product_pairs, n);
 
        Console.WriteLine( "Even Product Pairs = "+
            even_product_pairs );
         
        Console.WriteLine("Odd Product Pairs= "+
            odd_product_pairs );
    }
}


PHP




<?php
// function to count odd product pair
function count_odd_pair($n, $a)
{
    $odd = 0 ;
    $even = 0 ;
 
    for ($i = 0; $i < $n; $i++)
    {
 
        // if number is even
        if ($a[$i] % 2 == 0)
            $even++;
 
        // if number is odd
        else
            $odd++;
    }
 
    // count of ordered pairs
    $ans = $odd * ($odd - 1);
 
    return $ans;
}
 
// function to count even product pair
function count_even_pair($odd_product_pairs, $n)
{
    $total_pairs = ($n * ($n - 1));
    $ans = $total_pairs - $odd_product_pairs;
     
    return $ans ;
}
 
// Driver code
$n = 6;
$a = array( 2, 4, 5, 9, 1, 8 );
 
$odd_product_pairs = count_odd_pair($n, $a);
 
$even_product_pairs =
      count_even_pair($odd_product_pairs, $n);
 
echo "Even Product Pairs = ",
      $even_product_pairs, "\n";
echo "Odd Product Pairs = ",
      $odd_product_pairs, "\n";
 
// This code is contributed
// by ANKITRAI1
?>


Javascript




<script>
 
// JavaScript implementation of the above approach
 
// function to count odd product pair
function count_odd_pair(n, a)
{
    let odd = 0, even = 0;
 
    for (let i = 0; i < n; i++) {
 
        // if number is even
        if (a[i] % 2 == 0)
            even++;
 
        // if number is odd
        else
            odd++;
    }
 
    // count of ordered pairs
    let ans = odd * (odd - 1);
 
    return ans;
}
 
// function to count even product pair
function count_even_pair(odd_product_pairs, n)
{
    let total_pairs = (n * (n - 1));
    let ans = total_pairs - odd_product_pairs;
    return ans ;
}
 
// Driver code
    let n = 6;
    let a = [ 2, 4, 5, 9, 1, 8 ];
 
    let odd_product_pairs = count_odd_pair(n, a);
 
    let even_product_pairs = count_even_pair(
        odd_product_pairs, n);
 
    document.write("Even Product Pairs = "
        + even_product_pairs
        + "<br>");
    document.write("Odd Product Pairs= "
        + odd_product_pairs
        + "<br>");
 
// This code is contributed by Surbhi Tyagi.
 
</script>


Output

Even Product Pairs = 24
Odd Product Pairs= 6

Complexity Analysis:

  • Time Complexity: O(n), where n represents the size of the given array.
  • Auxiliary Complexity :O(1), no extra space is required, so it is a constant.


Last Updated : 28 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads