Count pairs with Even Product from two given arrays
Last Updated :
02 Oct, 2023
Given two arrays, arr[] and brr[] of size N and M respectively, the task is to find the count of pairs (arr[i], brr[j]) such that the product of elements of the pairs is an even number.
Examples:
Input: arr[] = { 1, 2, 3 }, brr[] = { 1, 2 }
Output: 4
Explanation:
Pairs with even product are: { (arr[0], brr[1]), (arr[1], brr[0]), (arr[1], brr[1]), (arr[2], brr[1]) }.
Therefore, the required output is 4.
Input: arr[] = { 3, 2, 1, 4, 4}, brr[] = { 1, 4, 2, 3, 1 }
Output: 19
Brute Force Approach:
The brute force approach to solve this problem is to use nested loops to iterate through all possible pairs of elements in the two arrays and check if the product of the pair is even. If the product is even, increment the count of such pairs.
The steps involved in the brute force approach are:
- Initialize a variable count to 0 to keep track of the count of pairs with even product.
- Use a nested loop to iterate through all possible pairs of elements in the two arrays.
- Check if the product of the pair is even using the modulo operator (%). If the product is even, increment the count variable.
- After all pairs have been checked, return the count variable as the output.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int countPairs( int arr[], int n, int brr[], int m) {
int count = 0;
for ( int i = 0; i < n; i++) {
for ( int j = 0; j < m; j++) {
if ((arr[i] * brr[j]) % 2 == 0)
count++;
}
}
return count;
}
int main() {
int arr[] = {1, 2, 3};
int brr[] = {1, 2};
int n = sizeof (arr) / sizeof (arr[0]);
int m = sizeof (brr) / sizeof (brr[0]);
cout << countPairs(arr, n, brr, m) << endl;
return 0;
}
|
Java
import java.util.*;
class Main {
public static int countPairs( int [] arr, int n, int [] brr, int m) {
int count = 0 ;
for ( int i = 0 ; i < n; i++) {
for ( int j = 0 ; j < m; j++) {
if ((arr[i] * brr[j]) % 2 == 0 )
count++;
}
}
return count;
}
public static void main(String[] args) {
int [] arr = { 1 , 2 , 3 };
int [] brr = { 1 , 2 };
int n = arr.length;
int m = brr.length;
System.out.println(countPairs(arr, n, brr, m));
}
}
|
Python3
def count_pairs(arr, n, brr, m):
count = 0
for i in range (n):
for j in range (m):
if (arr[i] * brr[j]) % 2 = = 0 :
count + = 1
return count
arr = [ 1 , 2 , 3 ]
brr = [ 1 , 2 ]
n = len (arr)
m = len (brr)
print (count_pairs(arr, n, brr, m))
|
C#
using System;
class Program
{
static int CountPairs( int [] arr, int n, int [] brr, int m)
{
int count = 0;
for ( int i = 0; i < n; i++)
{
for ( int j = 0; j < m; j++)
{
if ((arr[i] * brr[j]) % 2 == 0)
{
count++;
}
}
}
return count;
}
static void Main( string [] args)
{
int [] arr = { 1, 2, 3 };
int [] brr = { 1, 2 };
int n = arr.Length;
int m = brr.Length;
Console.WriteLine(CountPairs(arr, n, brr, m));
}
}
|
Javascript
function countPairs(arr, brr) {
let count = 0;
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < brr.length; j++) {
if ((arr[i] * brr[j]) % 2 === 0) {
count++;
}
}
}
return count;
}
function main() {
const arr = [1, 2, 3];
const brr = [1, 2];
const result = countPairs(arr, brr);
console.log(result);
}
main();
|
Time Complexity: O(N*M)
Auxiliary Space: O(1)
Efficient Approach: The above approach can be optimized based on the following properties of product of two numbers:
Odd * Odd = Odd
Even * Odd = Even
Even * Even = Even
Follow the steps below to solve the problem:
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int cntPairsInTwoArray( int arr[], int brr[],
int N, int M)
{
int cntOddArr = 0;
int cntOddBrr = 0;
for ( int i = 0; i < N; i++) {
if (arr[i] & 1) {
cntOddArr += 1;
}
}
for ( int i = 0; i < M; i++) {
if (brr[i] & 1) {
cntOddBrr += 1;
}
}
return (N * M) - (cntOddArr * cntOddBrr);
}
int main()
{
int arr[] = { 1, 2, 3 };
int N = sizeof (arr) / sizeof (arr[0]);
int brr[] = { 1, 2 };
int M = sizeof (brr) / sizeof (brr[0]);
cout << cntPairsInTwoArray(arr, brr, N, M);
return 0;
}
|
Java
import java.util.*;
class GFG{
static int cntPairsInTwoArray( int arr[], int brr[],
int N, int M)
{
int cntOddArr = 0 ;
int cntOddBrr = 0 ;
for ( int i = 0 ; i < N; i++) {
if (arr[i] % 2 == 1 ) {
cntOddArr += 1 ;
}
}
for ( int i = 0 ; i < M; i++) {
if (brr[i] % 2 == 1 ) {
cntOddBrr += 1 ;
}
}
return (N * M) - (cntOddArr * cntOddBrr);
}
public static void main(String[] args)
{
int arr[] = { 1 , 2 , 3 };
int N = arr.length;
int brr[] = { 1 , 2 };
int M = brr.length;
System.out.print(cntPairsInTwoArray(arr, brr, N, M));
}
}
|
Python3
def cntPairsInTwoArray(arr, brr, N, M):
cntOddArr = 0
cntOddBrr = 0
for i in range (N):
if (arr[i] & 1 ):
cntOddArr + = 1
for i in range (M):
if (brr[i] & 1 ):
cntOddBrr + = 1
return (N * M) - (cntOddArr * cntOddBrr)
if __name__ = = '__main__' :
arr = [ 1 , 2 , 3 ]
N = len (arr)
brr = [ 1 , 2 ]
M = len (brr)
print (cntPairsInTwoArray(arr, brr, N, M))
|
C#
using System;
class GFG{
static int cntPairsInTwoArray( int [] arr, int [] brr,
int N, int M)
{
int cntOddArr = 0;
int cntOddBrr = 0;
for ( int i = 0; i < N; i++)
{
if (arr[i] % 2 == 1)
{
cntOddArr += 1;
}
}
for ( int i = 0; i < M; i++)
{
if (brr[i] % 2 == 1)
{
cntOddBrr += 1;
}
}
return (N * M) - (cntOddArr * cntOddBrr);
}
public static void Main()
{
int [] arr = { 1, 2, 3 };
int N = arr.Length;
int [] brr = { 1, 2 };
int M = brr.Length;
Console.Write(cntPairsInTwoArray(
arr, brr, N, M));
}
}
|
Javascript
<script>
function cntPairsletwoArray(arr, brr,
N, M)
{
let cntOddArr = 0;
let cntOddBrr = 0;
for (let i = 0; i < N; i++) {
if (arr[i] % 2 == 1) {
cntOddArr += 1;
}
}
for (let i = 0; i < M; i++) {
if (brr[i] % 2 == 1) {
cntOddBrr += 1;
}
}
return (N * M) - (cntOddArr * cntOddBrr);
}
let arr = [ 1, 2, 3 ];
let N = arr.length;
let brr = [ 1, 2 ];
let M = brr.length;
document.write(cntPairsletwoArray(arr, brr, N, M));
</script>
|
Time Complexity: O(N)
Space Complexity: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...