Friday, October 10, 2025
HomeData Modelling & AINumber of special pairs possible from the given two numbers

Number of special pairs possible from the given two numbers

Given two numbers A, B. The task is to find the numbers of special pairs of A, B. A special pair of two numbers A, B is a pair of numbers X, Y which satisfies both of the given conditions – A = X | Y, B = X & Y.

Examples: 

Input: A = 3, B = 0
Output: 2
(0, 3), (1, 2) will satisfy the conditions

Input:  A = 5, B = 7
Output: 0

Approach: The key observation here is that if we want the OR of two numbers, X, Y to be equal to A. Then both X, Y has to be less than or equal to A. If anyone is greater A then there OR won’t be equal to A. This will give us the limits where our loop will terminate, rest we will try and check if two pairs meet the given condition, then we will increment the counter.
Below is the required implementation: 
 

C++




// C++ implementation of above approach
#include <iostream>
using namespace std;
 
// Function to count the pairs
int countPairs(int A, int B)
{
 
    // Variable to store a number of special pairs
    int cnt = 0;
 
    for (int i = 0; i <= A; ++i) {
        for (int j = i; j <= A; ++j) {
            // Calculating AND of i, j
            int AND = i & j;
 
            // Calculating OR of i, j
            int OR = i | j;
 
            // If the conditions are met,
            // then increment the count of special pairs
            if (OR == A and AND == B) {
                cnt++;
            }
        }
    }
    return cnt;
}
 
// Driver code
int main()
{
    int A = 3, B = 0;
    cout << countPairs(A, B);
 
    return 0;
}


Java




// Java implementation of above approach
class GFG
{
 
// Function to count the pairs
static int countPairs(int A, int B)
{
 
    // Variable to store a number
    // of special pairs
    int cnt = 0;
 
    for (int i = 0; i <= A; ++i)
    {
        for (int j = i; j <= A; ++j)
        {
            // Calculating AND of i, j
            int AND = i & j;
 
            // Calculating OR of i, j
            int OR = i | j;
 
            // If the conditions are met,
            // then increment the count
            // of special pairs
            if (OR == A && AND == B)
            {
                cnt++;
            }
        }
    }
    return cnt;
}
 
// Driver code
public static void main(String [] args)
{
    int A = 3, B = 0;
    System.out.println(countPairs(A, B));
}
}
 
// This code is contributed by ihritik


Python3




# Python3 implementation of above
# approach
 
# Function to count the pairs
def countPairs(A,B):
 
    # Variable to store a number
    # of special pairs
    cnt=0
    for i in range(0,A+1):
        for j in range(i,A+1):
 
            # Calculating AND of i, j
            AND = i&j
            OR = i|j
 
            # If the conditions are met,
            # then increment the count of
            # special pairs
            if(OR==A and AND==B):
                cnt +=1
    return cnt
 
if __name__=='__main__':
    A = 3
    B = 0
    print(countPairs(A,B))
 
# This code is contributed by
# Shrikant13


C#




// C# implementation of above approach
using System;
 
class GFG
{
     
// Function to count the pairs
static int countPairs(int A, int B)
{
 
    // Variable to store a number
    // of special pairs
    int cnt = 0;
 
    for (int i = 0; i <= A; ++i)
    {
        for (int j = i; j <= A; ++j)
        {
            // Calculating AND of i, j
            int AND = i & j;
 
            // Calculating OR of i, j
            int OR = i | j;
 
            // If the conditions are met,
            // then increment the count
            // of special pairs
            if (OR == A && AND == B)
            {
                cnt++;
            }
        }
    }
    return cnt;
}
 
// Driver code
public static void Main()
{
    int A = 3, B = 0;
    Console.WriteLine(countPairs(A, B));
}
}
 
// This code is contributed by ihritik


PHP




<?php
// PHP implementation of above approach
 
// Function to count the pairs
function countPairs($A, $B)
{
 
    // Variable to store a number
    // of special pairs
    $cnt = 0;
 
    for ($i = 0; $i <= $A; ++$i)
    {
        for ($j = $i; $j <= $A; ++$j)
        {
            // Calculating AND of i, j
            $AND = $i & $j;
 
            // Calculating OR of i, j
            $OR = $i | $j;
 
            // If the conditions are met,
            // then increment the count
            // of special pairs
            if ($OR == $A && $AND == $B)
            {
                $cnt++;
            }
        }
    }
    return $cnt;
}
         
// Driver code
$A = 3;
$B = 0;
echo countPairs($A, $B);
 
// This code is contributed by ihritik
?>


Javascript




<script>
// Javascript implementation of above approach
 
 
// Function to count the pairs
function countPairs(A, B) {
 
    // Variable to store a number of special pairs
    let cnt = 0;
 
    for (let i = 0; i <= A; ++i) {
        for (let j = i; j <= A; ++j) {
            // Calculating AND of i, j
            let AND = i & j;
 
            // Calculating OR of i, j
            let OR = i | j;
 
            // If the conditions are met,
            // then increment the count of special pairs
            if (OR == A && AND == B) {
                cnt++;
            }
        }
    }
    return cnt;
}
 
// Driver code
 
let A = 3, B = 0;
document.write(countPairs(A, B));
 
 
// This code is contributed by _saurabh_jaiswal
<script>


Output

2

Time Complexity: O(A2)
Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Dominic
32349 POSTS0 COMMENTS
Milvus
87 POSTS0 COMMENTS
Nango Kala
6715 POSTS0 COMMENTS
Nicole Veronica
11878 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11941 POSTS0 COMMENTS
Shaida Kate Naidoo
6837 POSTS0 COMMENTS
Ted Musemwa
7097 POSTS0 COMMENTS
Thapelo Manthata
6792 POSTS0 COMMENTS
Umr Jansen
6791 POSTS0 COMMENTS