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++ program to Count number of pairs // whose bit wise XOR value is greater // than bit wise AND value #include <bits/stdc++.h> 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 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 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# 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. |
<script> // JavaScript code for the above approach
// Function that return count of pairs
// whose bitwise xor >= bitwise
function valid_pairs(arr, N) {
let cnt = 0;
// check for all possible pairs
for (let i = 0; i < N; i++) {
for (let j = i + 1; j < N; j++) {
if ((arr[i] ^ arr[j]) >= (arr[i] & arr[j]))
cnt++;
}
}
return cnt;
}
// Driver Code
let N = 3;
let arr = [12, 4, 15];
document.write(valid_pairs(arr, N));
// This code is contributed by Potta Lokesh
</script>
|
2
Time Complexity: O(N*N)
Auxiliary Space: O(1)