# Count pairs with Odd XOR

Given an array of n integers. Find out number of pairs in array whose XOR is odd.

Examples :

```Input : arr[] = { 1, 2, 3 }
Output : 2
All pairs of array
1 ^ 2 = 3
1 ^ 3 = 2
2 ^ 3 = 1

Input : arr[] = { 1, 2, 3, 4 }
Output : 4
```

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

Naive Approach: We can find pairs whose XOR is odd by running two loops. If XOR of two number is odd increase count of pairs.

## C++

 `// C++ program to count pairs in array ` `// whose XOR is odd ` `#include ` `using` `namespace` `std; ` ` `  `// A function will return number of pair ` `// whose XOR is odd ` `int` `countXorPair(``int` `arr[], ``int` `n) ` `{ ` `    ``// To store count of XOR pair ` `    ``int` `count = 0; ` ` `  `    ``for` `(``int` `i = 0; i < n; i++) { ` `        ``for` `(``int` `j = i + 1; j < n; j++) ` ` `  `            ``// If XOR is odd increase count ` `            ``if` `((arr[i] ^ arr[j]) % 2 == 1) ` `                ``count++; ` `    ``} ` ` `  `    ``// Return count ` `    ``return` `count; ` `} ` ` `  `// Driver program to test countXorPair() ` `int` `main() ` `{ ` `    ``int` `arr[] = { 1, 2, 3 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr); ` `    ``cout << countXorPair(arr, n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to count pairs in array whose ` `// XOR is odd ` `public` `class` `CountXor { ` `    ``// A function will return number of pair ` `    ``// whose XOR is odd ` `    ``static` `int` `countXorPair(``int` `arr[], ``int` `n) ` `    ``{ ` `        ``// To store count of XOR pair ` `        ``int` `count = ``0``; ` ` `  `        ``for` `(``int` `i = ``0``; i < n; i++) { ` `            ``for` `(``int` `j = i + ``1``; j < n; j++) ` ` `  `                ``// If XOR is odd increase count ` `                ``if` `((arr[i] ^ arr[j]) % ``2` `== ``1``) ` `                    ``count++; ` `        ``} ` ` `  `        ``// Return count ` `        ``return` `count; ` `    ``} ` ` `  `    ``// Driver program to test countXorPair() ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``int` `arr[] = { ``1``, ``2``, ``3` `}; ` `        ``System.out.println(countXorPair(arr, arr.length)); ` `    ``} ` `} `

## Python 3

 `# Python 3 program to count  ` `# pairs in array whose XOR is odd ` ` `  `# A function will  ` `# return number of pair ` `# whose XOR is odd ` `def` `countXorPair(arr, n): ` ` `  `    ``# To store count of XOR pair ` `    ``count ``=` `0` ` `  `    ``for` `i ``in` `range``(n): ` `        ``for` `j ``in` `range``(i ``+` `1``, n): ` ` `  `            ``# If XOR is odd increase count ` `            ``if` `((arr[i] ^ arr[j]) ``%` `2` `=``=` `1``): ` `                ``count ``+``=` `1` ` `  `    ``# Return count ` `    ``return` `count ` ` `  `# Driver Code ` `if` `__name__ ``=``=` `"__main__"``: ` `    ``arr``=` `[ ``1``, ``2``, ``3` `] ` `    ``n ``=` `len``(arr) ` `    ``print``(countXorPair(arr, n)) ` ` `  `# This code is contributed ` `# by ChitraNayal `

## C#

 `// C# program to count pairs in  ` `// array whose XOR is odd ` `using` `System; ` ` `  `public` `class` `CountXor { ` `     `  `    ``// A function will return number of pair ` `    ``// whose XOR is odd ` `    ``static` `int` `countXorPair(``int``[] arr, ``int` `n) ` `    ``{ ` `        ``// To store count of XOR pair ` `        ``int` `count = 0; ` ` `  `        ``for` `(``int` `i = 0; i < n; i++) { ` `            ``for` `(``int` `j = i + 1; j < n; j++) ` ` `  `                ``// If XOR is odd increase count ` `                ``if` `((arr[i] ^ arr[j]) % 2 == 1) ` `                    ``count++; ` `        ``} ` ` `  `        ``// Return count ` `        ``return` `count; ` `    ``} ` ` `  `    ``// Driver program to test countXorPair() ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int``[] arr = {1, 2, 3}; ` `        ``Console.WriteLine(countXorPair(arr, arr.Length)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## PHP

 ` `

Output:

```2
```

Time Complexity : O(n*n)

Efficient Approach: We can observe that:

```odd ^ odd = even
odd ^ even = odd
even ^ odd = odd
even ^ even = even
```

Therefore total pairs in array whose XOR is odd will be equal to count of odd numbers multiplied by count of even numbers.

## C++

 `// C++ program to count pairs in array ` `// whose XOR is odd ` `#include ` `using` `namespace` `std; ` ` `  `// A function will return number of pair ` `// whose XOR is odd ` `int` `countXorPair(``int` `arr[], ``int` `n) ` `{ ` `    ``// To store count of odd and even ` `    ``// numbers ` `    ``int` `odd = 0, even = 0; ` ` `  `    ``for` `(``int` `i = 0; i < n; i++) { ` `        ``// Increase even if number is ` `        ``// even otherwise increase odd ` `        ``if` `(arr[i] % 2 == 0) ` `            ``even++; ` `        ``else` `            ``odd++; ` `    ``} ` ` `  `    ``// Return number of pairs ` `    ``return` `odd * even; ` `} ` ` `  `// Driver program to test countXorPair() ` `int` `main() ` `{ ` `    ``int` `arr[] = { 1, 2, 3 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr); ` `    ``cout << countXorPair(arr, n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to count pairs in array whose ` `// XOR is odd ` ` `  `public` `class` `CountXor { ` `    ``// A function will return number of pair ` `    ``// whose XOR is odd ` `    ``static` `int` `countXorPair(``int` `arr[], ``int` `n) ` `    ``{ ` `        ``// To store count of odd and even numbers ` `        ``int` `odd = ``0``, even = ``0``; ` ` `  `        ``for` `(``int` `i = ``0``; i < n; i++) { ` `            ``// Increase even if number is ` `            ``// even otherwise increase odd ` `            ``if` `(arr[i] % ``2` `== ``0``) ` `                ``even++; ` `            ``else` `                ``odd++; ` `        ``} ` ` `  `        ``// Return number of pairs ` `        ``return` `odd * even; ` `    ``} ` ` `  `    ``// Driver program to test countXorPair() ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` `        ``int` `arr[] = { ``1``, ``2``, ``3` `}; ` `        ``System.out.println(countXorPair(arr, arr.length)); ` `    ``} ` `} `

## Python 3

 `# Python 3 program to count  ` `# pairs in array whose XOR is odd ` ` `  `# A function will ` `# return number of pair ` `# whose XOR is odd ` `def` `countXorPair(arr, n): ` ` `  `    ``# To store count of  ` `    ``# odd and even numbers ` `    ``odd ``=` `0` `    ``even ``=` `0` ` `  `    ``for` `i ``in` `range``(n): ` `         `  `        ``# Increase even if number is ` `        ``# even otherwise increase odd ` `        ``if` `arr[i] ``%` `2` `=``=` `0``: ` `            ``even ``+``=` `1` `        ``else``: ` `            ``odd ``+``=` `1` ` `  `    ``# Return number of pairs ` `    ``return` `odd ``*` `even ` ` `  `# Driver Code ` `if` `__name__ ``=``=` `"__main__"``: ` `    ``arr ``=` `[ ``1``, ``2``, ``3` `] ` `    ``n ``=` `len``(arr) ` `    ``print``(countXorPair(arr, n)) ` ` `  `# This code is contributed  ` `# by ChitraNayal `

## C#

 `// C# program to count pairs in ` `// array whose XOR is odd ` `using` `System; ` ` `  `public` `class` `CountXor { ` `     `  `    ``// A function will return number of pair ` `    ``// whose XOR is odd ` `    ``static` `int` `countXorPair(``int``[] arr, ``int` `n) ` `    ``{ ` `        ``// To store count of odd and even numbers ` `        ``int` `odd = 0, even = 0; ` ` `  `        ``for` `(``int` `i = 0; i < n; i++) { ` `             `  `            ``// Increase even if number is ` `            ``// even otherwise increase odd ` `            ``if` `(arr[i] % 2 == 0) ` `                ``even++; ` `            ``else` `                ``odd++; ` `        ``} ` ` `  `        ``// Return number of pairs ` `        ``return` `odd * even; ` `    ``} ` ` `  `    ``// Driver program to test countXorPair() ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int``[] arr = {1, 2, 3}; ` `        ``Console.WriteLine(countXorPair(arr, arr.Length)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## PHP

 ` `

Output :

```2
```

Time Complexity : O(n)

This article is contributed by nuclode. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.