Count pairs with Bitwise AND as ODD number in C++

C++Server Side ProgrammingProgramming

We are given an integer array and the task is to count the total number of pairs that can be formed using the given array values such that the AND operation on the pairs will result in an odd number.

The truth table for AND operation is given below

ABA^B
000
100
010
111

Input − int arr[] = {2, 5, 1, 8, 9}

Output − Count of pairs with Bitwise AND as ODD number are − 3

Explanation

a1a2a1^a2
250
210
280
290
511
580
591
180
191
898

Approach used in the below program is as follows

  • Input an array of integer elements to form an pair

  • Calculate the size of an array pass the data to the function for further processing

  • Create a temporary variable count to store the pairs formed with AND operation as an odd value.

  • Start loop FOR from i to 0 till the size of an array

  • Inside the loop, check IF arr[i] % 2 == TRUE then increment the count by 1

  • Set the count as count * (count - 1) / 2

  • Return the count

  • Print the result.

Example

 Live Demo

#include <iostream>
using namespace std;
//Count pairs with Bitwise AND as ODD number
int count_pair(int arr[], int size){
   int count = 0;
   for (int i = 0; i < size; i++){
      if ((arr[i] % 2 == 1)){
         count++;
      }
   }
   count = count * (count - 1) / 2;
   return count;
}
int main(){
   int arr[] = {2, 5, 1, 8, 9, 2, 7};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of pairs with Bitwise AND as ODD number are: "<<count_pair(arr, size) << endl;
   return 0;
}

Output

If we run the above code it will generate the following output −

Count of pairs with Bitwise AND as ODD number are: 6
raja
Published on 31-Aug-2020 12:41:07
Advertisements