GFG App
Open App
Browser
Continue

# Count pairs with Bitwise XOR as ODD number

Given an array of N integers, the task is to find the number of pairs (i, j) such that A[i] ^ A[j] is odd.
Examples:

```Input : N = 5
A[] =  { 5, 4, 7, 2, 1}
Output :6
Since pair of A[] =
( 5, 4 ) = 1( 5, 7 ) = 2( 5, 2 ) = 7( 5, 1 ) = 4
( 4, 7 ) = 3( 4, 2 ) = 6( 4, 1 ) = 5
( 7, 2 ) = 5( 7, 1 ) = 6
( 2, 1 ) = 3
Total XOR ODD pair  = 6

Input : N = 7
A[] = { 7, 2, 8, 1, 0, 5, 11 }
Output :12
Since pair of A[] =
( 7, 2 ) = 5( 7, 8 ) = 15( 7, 1 ) = 6( 7, 0 ) = 7( 7, 5 ) = 2( 7, 11 ) = 12
( 2, 8 ) = 10( 2, 1 ) = 3( 2, 0 ) = 2( 2, 5 ) = 7( 2, 11 ) = 9
( 8, 1 ) = 9( 8, 0 ) = 8( 8, 5 ) = 13( 8, 11 ) = 3
( 1, 0 ) = 1( 1, 5 ) = 4( 1, 11 ) = 10
( 0, 5 ) = 5( 0, 11 ) = 11
( 5, 11 ) = 14```

A naive approach is to check for every pair and print the count of pairs.
Below is the implementation of the above approach:

## C++

 `// C++ program to count pairs` `// with XOR giving a odd number` `#include ` `using` `namespace` `std;`   `// Function to count number of odd pairs` `int` `findOddPair(``int` `A[], ``int` `N)` `{` `    ``int` `i, j;`   `    ``// variable for counting odd pairs` `    ``int` `oddPair = 0;`   `    ``// find all pairs` `    ``for` `(i = 0; i < N; i++) {` `        ``for` `(j = i + 1; j < N; j++) {`   `            ``// find XOR operation` `            ``// check odd or even` `            ``if` `((A[i] ^ A[j]) % 2 != 0)` `                ``oddPair++;` `        ``}` `        ``cout << endl;` `    ``}`   `    ``// return number of odd pair` `    ``return` `oddPair;` `}`   `// Driver Code` `int` `main()` `{`   `    ``int` `A[] = { 5, 4, 7, 2, 1 };` `    ``int` `N = ``sizeof``(A) / ``sizeof``(A[0]);`   `    ``// calling function findOddPair` `    ``// and print number of odd pair` `    ``cout << findOddPair(A, N) << endl;`   `    ``return` `0;` `}`

## Java

 `// Java program to count pairs` `// with XOR giving a odd number`   `class` `GFG` `{` `    `  `// Function to count ` `// number of odd pairs` `static` `int` `findOddPair(``int` `A[],` `                       ``int` `N)` `{` `    ``int` `i, j;`   `    ``// variable for counting ` `    ``// odd pairs` `    ``int` `oddPair = ``0``;`   `    ``// find all pairs` `    ``for` `(i = ``0``; i < N; i++)` `    ``{` `        ``for` `(j = i + ``1``; j < N; j++)` `        ``{`   `            ``// find XOR operation` `            ``// check odd or even` `            ``if` `((A[i] ^ A[j]) % ``2` `!= ``0``)` `                ``oddPair++;` `        ``}` `    `  `    ``}`   `    ``// return number ` `    ``// of odd pair` `    ``return` `oddPair;` `}`   `// Driver Code` `public` `static` `void` `main(String args[])` `{` `    ``int` `A[] = { ``5``, ``4``, ``7``, ``2``, ``1` `};` `    ``int` `N = A.length;`   `    ``// calling function findOddPair` `    ``// and print number of odd pair` `    ``System.out.println(findOddPair(A, N)); ` `}` `}`   `// This code is contributed ` `// by Kirti_Mangal`

## Python3

 `# Python3 program to count pairs ` `# with XOR giving a odd number `   `# Function to count number of odd pairs ` `def` `findOddPair(A, N) :`   `    ``# variable for counting odd pairs ` `    ``oddPair ``=` `0`   `    ``# find all pairs ` `    ``for` `i ``in` `range``(``0``, N) : ` `        ``for` `j ``in` `range``(i``+``1``, N) :`   `            ``# find XOR operation ` `            ``# check odd or even ` `            ``if` `((A[i] ^ A[j]) ``%` `2` `!``=` `0``): ` `                ``oddPair``+``=``1`   `    ``# return number of odd pair ` `    ``return` `oddPair `   `# Driver Code` `if` `__name__``=``=``'__main__'``:` `    ``A ``=` `[``5``, ``4``, ``7``, ``2``, ``1` `] ` `    ``N ``=` `len``(A)`   `# calling function findOddPair ` `# and print number of odd pair ` `    ``print``(findOddPair(A, N)) `   `# This code is contributed by Smitha Dinesh Semwal`

## C#

 `// C# program to count pairs` `// with XOR giving a odd number` `using` `System;`   `class` `GFG` `{` `    `  `// Function to count ` `// number of odd pairs` `static` `int` `findOddPair(``int``[] A,` `                    ``int` `N)` `{` `    ``int` `i, j;`   `    ``// variable for counting ` `    ``// odd pairs` `    ``int` `oddPair = 0;`   `    ``// find all pairs` `    ``for` `(i = 0; i < N; i++)` `    ``{` `        ``for` `(j = i + 1; j < N; j++)` `        ``{`   `            ``// find XOR operation` `            ``// check odd or even` `            ``if` `((A[i] ^ A[j]) % 2 != 0)` `                ``oddPair++;` `        ``}` `    `  `    ``}`   `    ``// return number ` `    ``// of odd pair` `    ``return` `oddPair;` `}`   `// Driver Code` `public` `static` `void` `Main()` `{` `    ``int``[] A = { 5, 4, 7, 2, 1 };` `    ``int` `N = A.Length;`   `    ``// calling function findOddPair` `    ``// and print number of odd pair` `    ``Console.WriteLine(findOddPair(A, N)); ` `}` `}`   `// This code is contributed ` `// by Akanksha Rai(Abby_akku)`     `# calling function findOddPair ` `# and print number of odd pair ` `print(findOddPair(a, n)) `

## PHP

 ``

## Javascript

 ``

OUTPUT:

`6`

Time Complexity: O(N^2) as two nested loops are being used.
Auxiliary Space: O(1), as constant space is being used by the algorithm.

An efficient solution is to count the even numbers. Then return count * (N – count).

## C++

 `// C++ program to count pairs` `// with XOR giving a odd number` `#include ` `using` `namespace` `std;`   `// Function to count number of odd pairs` `int` `findOddPair(``int` `A[], ``int` `N)` `{` `    ``int` `i, count = 0;`   `    ``// find all pairs` `    ``for` `(i = 0; i < N; i++) {` `        ``if` `(A[i] % 2 == 0)` `            ``count++;` `    ``}`   `    ``// return number of odd pair` `    ``return` `count * (N - count);` `}`   `// Driver Code` `int` `main()` `{` `    ``int` `a[] = { 5, 4, 7, 2, 1 };` `    ``int` `n = ``sizeof``(a) / ``sizeof``(a[0]);`   `    ``// calling function findOddPair` `    ``// and print number of odd pair` `    ``cout << findOddPair(a, n) << endl;`   `    ``return` `0;` `}`

## Java

 `// Java program to count pairs` `// with XOR giving a odd number` `class` `GFG` `{` `// Function to count` `// number of odd pairs` `static` `int` `findOddPair(``int` `A[], ` `                       ``int` `N)` `{` `    ``int` `i, count = ``0``;`   `    ``// find all pairs` `    ``for` `(i = ``0``; i < N; i++) ` `    ``{` `        ``if` `(A[i] % ``2` `== ``0``)` `            ``count++;` `    ``}`   `    ``// return number of odd pair` `    ``return` `count * (N - count);` `}`   `// Driver Code` `public` `static` `void` `main(String[] arg)` `{` `    ``int` `a[] = { ``5``, ``4``, ``7``, ``2``, ``1` `};` `    ``int` `n = a.length ;`   `    ``// calling function findOddPair` `    ``// and print number of odd pair` `    ``System.out.println(findOddPair(a, n));` `}` `}`   `// This code is contributed` `// by Smitha`

## Python3

 `# Python3 program to count pairs ` `# with XOR giving a odd number `   `# Function to count number of odd pairs ` `def` `findOddPair(A, N) :`   `    ``count ``=` `0`   `    ``# find all pairs ` `    ``for` `i ``in` `range``(``0` `, N) : ` `        ``if` `(A[i] ``%` `2` `=``=` `0``) :` `            ``count``+``=``1` `    `  `    ``# return number of odd pair ` `    ``return` `count ``*` `(N ``-` `count) `   `# Driver Code` `if` `__name__``=``=``'__main__'``:` `    ``a ``=` `[``5``, ``4``, ``7``, ``2``, ``1``] ` `    ``n ``=` `len``(a)` `    ``print``(findOddPair(a,n))`   `# this code is contributed by Smitha Dinesh Semwal`

## C#

 `// C# program to count pairs` `// with XOR giving a odd number` `using` `System;`   `class` `GFG` `{` `// Function to count` `// number of odd pairs` `static` `int` `findOddPair(``int` `[]A,` `                       ``int` `N)` `{` `    ``int` `i, count = 0;`   `    ``// find all pairs` `    ``for` `(i = 0; i < N; i++) ` `    ``{` `        ``if` `(A[i] % 2 == 0)` `            ``count++;` `    ``}`   `    ``// return number of odd pair` `    ``return` `count * (N - count);` `}`   `// Driver Code` `public` `static` `void` `Main()` `{` `    ``int` `[]a = { 5, 4, 7, 2, 1 };` `    ``int` `n = a.Length ;`   `    ``// calling function findOddPair` `    ``// and print number of odd pair` `    ``Console.Write(findOddPair(a, n));` `}` `}`   `// This code is contributed` `// by Smitha`

## PHP

 ``

## Javascript

 ``

Output:

`6`

Time Complexity: O(N), since one traversal of the array is required to complete all operations.
Auxiliary Space: O(1), as constant space is being used.

My Personal Notes arrow_drop_up