GeeksforGeeks App
Open App
Browser
Continue

# Count of pairs with bitwise XOR value greater than its bitwise AND value

Given an array arr that contains N positive Integers. Find the count of all possible pairs whose bitwise XOR value is greater than bitwise AND value

Examples:

Input : arr[]={ 12, 4, 15}
Output:  2
Explanation: 12 ^ 4 = 8, 12 & 4 = 4. so 12 ^ 4 > 12 & 4
4 ^ 15 = 11,   4 & 15 = 4. so 4 ^ 15  > 4 & 15 .
So, above two are valid pairs { 12, 4 }, {4, 15}  .

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

Approach: Refer to the below idea for the approach to solve this problem:

We know that, for an array of length N, there will be a total (N*(N-1))/2 pairs.

Therefore check for every pair, and increase count by one if a pair satisfy the given condition in the question.

Follow the below steps to solve this problem:

• Check for every pair whether their bit wise XOR value is greater than bit wise AND or not.
• If yes then increase the count
• Return the count.

Below is the Implementation of the above approach:

## C++

 `// C++ program to Count number of pairs``// whose bit wise XOR value is greater``// than bit wise AND value` `#include ``using` `namespace` `std;` `// Function that return count of pairs``// whose bitwise xor >= bitwise and``long` `long` `valid_pairs(``int` `arr[], ``int` `N)``{``    ``long` `long` `cnt = 0;``    ``// check for all possible pairs``    ``for` `(``int` `i = 0; i < N; i++) {``        ``for` `(``int` `j = i + 1; j < N; j++) {``            ``if` `((arr[i] ^ arr[j]) >= (arr[i] & arr[j]))``                ``cnt++;``        ``}``    ``}` `    ``return` `cnt;``}` `// Driver Code``int` `main()``{``    ``int` `N = 3;``    ``int` `arr[] = { 12, 4, 15 };``    ``cout << valid_pairs(arr, N);``}`

## Java

 `// Java program to Count number of pairs``// whose bit wise XOR value is greater``// than bit wise AND value``import` `java.io.*;` `class` `GFG``{` `  ``// Function that return count of pairs``  ``// whose bitwise xor >= bitwise``  ``public` `static` `long` `valid_pairs(``int` `arr[], ``int` `N)``  ``{``    ``long` `cnt = ``0``;` `    ``// check for all possible pairs``    ``for` `(``int` `i = ``0``; i < N; i++) {``      ``for` `(``int` `j = i + ``1``; j < N; j++) {``        ``if` `((arr[i] ^ arr[j]) >= (arr[i] & arr[j]))``          ``cnt++;``      ``}``    ``}` `    ``return` `cnt;``  ``}` `  ``// Driver code``  ``public` `static` `void` `main(String[] args)``  ``{``    ``int` `N = ``3``;``    ``int` `arr[] = { ``12``, ``4``, ``15` `};``    ``System.out.print(valid_pairs(arr, N));``  ``}``}` `// This code is contributed by Rohit Pradhan.`

## Python3

 `# python3 program to Count number of pairs``# whose bit wise XOR value is greater``# than bit wise AND value` `# Function that return count of pairs``# whose bitwise xor >= bitwise``def` `valid_pairs(arr, N):` `    ``cnt ``=` `0``    ` `    ``# check for all possible pairs``    ``for` `i ``in` `range``(``0``, N):``        ``for` `j ``in` `range``(i ``+` `1``, N):``            ``if` `((arr[i] ^ arr[j]) >``=` `(arr[i] & arr[j])):``                ``cnt ``+``=` `1` `    ``return` `cnt` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:` `    ``N ``=` `3``    ``arr ``=` `[``12``, ``4``, ``15``]``    ``print``(valid_pairs(arr, N))` `    ``# This code is contributed by rakeshsahni`

## C#

 `// C# program to Count number of pairs``// whose bit wise XOR value is greater``// than bit wise AND value``using` `System;` `class` `GFG {` `  ``// Function that return count of pairs``  ``// whose bitwise xor >= bitwise``  ``public` `static` `long` `valid_pairs(``int``[] arr, ``int` `N)``  ``{``    ``long` `cnt = 0;` `    ``// check for all possible pairs``    ``for` `(``int` `i = 0; i < N; i++) {``      ``for` `(``int` `j = i + 1; j < N; j++) {``        ``if` `((arr[i] ^ arr[j]) >= (arr[i] & arr[j]))``          ``cnt++;``      ``}``    ``}` `    ``return` `cnt;``  ``}` `  ``// Driver code``  ``public` `static` `void` `Main(``string``[] args)``  ``{``    ``int` `N = 3;``    ``int``[] arr = { 12, 4, 15 };``    ``Console.Write(valid_pairs(arr, N));``  ``}``}` `// This code is contributed by ukasp.`

## Javascript

 ``

Output

`2`

Time Complexity: O(N*N)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up