# Count pairs with Bitwise XOR as EVEN 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 even.
Examples:

Input: A[] =  { 5, 4, 7, 2, 1}
Output: 4
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 even pair  = 4

Input: A[] = { 7, 2, 8, 1, 0, 5, 11 }
Output: 9
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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

A naive approach is to check for every pair and print the count of pairs which are even.

Below is the implementation of the above approach:

## C++

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

## Java

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

## Python3

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

## C#

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

## PHP



Output:

4

Time Complexity: O(n^2)

An efficient solution is to Count pairs with Bitwise XOR as ODD number i.e. oddEvenpairs. Then return totalPairs – oddEvenPairs where totalPairs = (N * (N-1) / 2) and oddEvenPairs = count * (N – count). As, pairs that will give Even Bitwise XOR are :

Even, Even
Odd, Odd

So, find the count of pairs with both odd and even elements and subtract from total no. of pairs.

Below is the implementation of the above approach:

## C++

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

## Java

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

## Python3

 # python program to count pairs # with XOR giving a even number    # Function to count number of even pairs def findEvenPair(A, N):     count = 0         # find all pairs     for i in range(0,N):         if (A[i] % 2 != 0):             count+=1         totalPairs = (N * (N - 1) / 2)     oddEvenPairs = count * (N - count)         # return number of even pair     return (int)(totalPairs - oddEvenPairs)    # Driver Code def main():     a = [ 5, 4, 7, 2, 1 ]     n = len(a)         # calling function findEvenPair     # and pr number of even pair     print(findEvenPair(a, n))     if __name__ == '__main__':     main()        # This code is contributed by 29AjayKumar

## C#

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

## PHP



Output:

4

Time Complexity : O(n)

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.