Given two arrays **A[]** and **B[]** of **N** elements each. The task is to find the number of index pairs **(i, j)** such that **i ≤ j** and **F(A[i] | A[j]) = B[j]** where **F(X)** is the count of set bits in the binary representation of **X**.

**Examples**

Input:A[] = {5, 3, 2, 4, 6, 1}, B[] = {2, 2, 1, 4, 2, 3}Output:7

All possible pairs are (5, 5), (3, 3), (2, 2),

(2, 6), (4, 6), (6, 6) and (6, 1).

Input:A[] = {4, 3, 5, 6, 7}, B[] = {1, 3, 2, 4, 5}Output:4

**Approach:** Iterate through all the possible pairs (i, j) and check the count of set bits in their OR value. If the count is equal to B[j] then increment the count.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` ` ` `// Function to return the count of pairs` `// which satisfy the given condition` `int` `solve(` `int` `A[], ` `int` `B[], ` `int` `n)` `{` ` ` `int` `cnt = 0;` ` ` ` ` `for` `(` `int` `i = 0; i < n; i++)` ` ` `for` `(` `int` `j = i; j < n; j++)` ` ` ` ` `// Check if the count of set bits` ` ` `// in the OR value is B[j]` ` ` `if` `(__builtin_popcount(A[i] | A[j]) == B[j]) {` ` ` `cnt++;` ` ` `}` ` ` ` ` `return` `cnt;` `}` ` ` `// Driver code` `int` `main()` `{` ` ` `int` `A[] = { 5, 3, 2, 4, 6, 1 };` ` ` `int` `B[] = { 2, 2, 1, 4, 2, 3 };` ` ` `int` `size = ` `sizeof` `(A) / ` `sizeof` `(A[0]);` ` ` ` ` `cout << solve(A, B, size);` ` ` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach` `class` `GFG ` `{` ` ` `// Function to return the count of pairs` `// which satisfy the given condition` `static` `int` `solve(` `int` `A[], ` `int` `B[], ` `int` `n)` `{` ` ` `int` `cnt = ` `0` `;` ` ` ` ` `for` `(` `int` `i = ` `0` `; i < n; i++)` ` ` `for` `(` `int` `j = i; j < n; j++)` ` ` ` ` `// Check if the count of set bits` ` ` `// in the OR value is B[j]` ` ` `if` `(Integer.bitCount(A[i] | A[j]) == B[j])` ` ` `{` ` ` `cnt++;` ` ` `}` ` ` ` ` `return` `cnt;` `}` ` ` `// Driver code` `public` `static` `void` `main(String args[])` `{` ` ` `int` `A[] = { ` `5` `, ` `3` `, ` `2` `, ` `4` `, ` `6` `, ` `1` `};` ` ` `int` `B[] = { ` `2` `, ` `2` `, ` `1` `, ` `4` `, ` `2` `, ` `3` `};` ` ` `int` `size = A.length;` ` ` ` ` `System.out.println(solve(A, B, size));` `}` `}` ` ` `// This code is contributed by 29AjayKumar` |

## Python3

`# Python3 implementation of the approach ` ` ` `# Function to return the count of pairs ` `# which satisfy the given condition ` `def` `solve(A, B, n) : ` ` ` ` ` `cnt ` `=` `0` `; ` ` ` `for` `i ` `in` `range` `(n) :` ` ` `for` `j ` `in` `range` `(i, n) : ` ` ` ` ` `# Check if the count of set bits ` ` ` `# in the OR value is B[j] ` ` ` `if` `(` `bin` `(A[i] | A[j]).count(` `'1'` `) ` `=` `=` `B[j]) :` ` ` `cnt ` `+` `=` `1` `; ` ` ` ` ` `return` `cnt ` ` ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` ` ` `A ` `=` `[ ` `5` `, ` `3` `, ` `2` `, ` `4` `, ` `6` `, ` `1` `]; ` ` ` `B ` `=` `[ ` `2` `, ` `2` `, ` `1` `, ` `4` `, ` `2` `, ` `3` `]; ` ` ` `size ` `=` `len` `(A); ` ` ` ` ` `print` `(solve(A, B, size)); ` ` ` `# This code is contributed by AnkitRai01` |

## C#

`// C# implementation of the approach ` `using` `System;` ` ` `class` `GFG ` `{` ` ` `// Function to return the count of pairs` `// which satisfy the given condition` `static` `int` `solve(` `int` `[]A, ` `int` `[]B, ` `int` `n)` `{` ` ` `int` `cnt = 0;` ` ` ` ` `for` `(` `int` `i = 0; i < n; i++)` ` ` `for` `(` `int` `j = i; j < n; j++)` ` ` ` ` `// Check if the count of set bits` ` ` `// in the OR value is B[j]` ` ` `if` `(bitCount(A[i] | A[j]) == B[j])` ` ` `{` ` ` `cnt++;` ` ` `}` ` ` ` ` `return` `cnt;` `}` ` ` `static` `int` `bitCount(` `long` `x)` `{` ` ` `// To store the count` ` ` `// of set bits` ` ` `int` `setBits = 0;` ` ` `while` `(x != 0)` ` ` `{` ` ` `x = x & (x - 1);` ` ` `setBits++;` ` ` `}` ` ` `return` `setBits;` `}` ` ` `// Driver code` `public` `static` `void` `Main(String []args)` `{` ` ` `int` `[]A = { 5, 3, 2, 4, 6, 1 };` ` ` `int` `[]B = { 2, 2, 1, 4, 2, 3 };` ` ` `int` `size = A.Length;` ` ` ` ` `Console.WriteLine(solve(A, B, size));` `}` `}` ` ` `/* This code is contributed by PrinciRaj1992 */` |

**Output:**

7

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.