📌  相关文章
📜  给定两个数字中可能存在的特殊对的数量

📅  最后修改于: 2021-04-28 18:36:23             🧑  作者: Mango

给定两个数字A,B。任务是查找A,B的特殊对的数目。两个特殊的A,B的对是满足两个给定条件的一对数字X,Y – A = X | Y,B = X&Y。

例子:

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

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

方法:此处的主要观察结果是,如果我们希望两个数字X,Y的OR等于A。那么两个X,Y都必须小于或等于A。如果有人大于A,则OR等于不等于A。这将为我们提供循环终止的极限,休息时我们将尝试检查两对是否满足给定条件,然后将计数器增加。

以下是所需的实现:

C++
// C++ implementation of above approach
#include 
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


输出:
2