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 <iostream> 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
<?php //PHP program to count pairs // with XOR giving a odd number // Function to count number of odd pairs function findOddPair( $A , $N ) { $i ; $j ; // variable for counting odd pairs $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 $A = array ( 5, 4, 7, 2, 1 ); $N = sizeof( $A ) / sizeof( $A [0]); // calling function findOddPair // and print number of odd pair echo findOddPair( $A , $N ), "\n" ; // This Code is Contributed by ajit ?> |
Javascript
<script> // JavaScript program to count pairs // with XOR giving a odd number // Function to count number of odd pairs function findOddPair(A, N) { let i, j; // variable for counting odd pairs let 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 let A = [ 5, 4, 7, 2, 1 ]; let N = A.length; // calling function findOddPair // and print number of odd pair document.write(findOddPair(A, N) + "<br>" ); // This code is contributed by Surbhi Tyagi. </script> |
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 <iostream> 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
<?php // PHP program to count pairs // with XOR giving a odd number // Function to count number // of odd pairs function findOddPair( $A , $N ) { $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 $a = array ( 5, 4, 7, 2, 1 ); $n = count ( $a ); // calling function findOddPair // and print number of odd pair echo ( findOddPair( $a , $n )); // This code is contributed // by Smitha ?> |
Javascript
<script> // Javascript program to count pairs // with XOR giving a odd number // Function to count number of odd pairs function findOddPair(A, N) { let 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 let a = [ 5, 4, 7, 2, 1 ]; let n = a.length; // calling function findOddPair // and print number of odd pair document.write(findOddPair(a, n)); </script> |
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.
Please Login to comment...