📜  在给定方程中找到X和Y的值

📅  最后修改于: 2021-05-04 14:54:43             🧑  作者: Mango

给定两个数字A  B  。在方程中找到XY的值。

  1. A = X + Y
  2. B = X或Y

任务是使X尽可能最小。如果找不到X和Y的有效值,则打印-1。
例子:

Input : A = 12, B = 8
Output : X = 2, Y = 10

Input : A = 12, B = 9
Output : -1

让我们看一下X中的某个位等于1。如果Y中的各个位等于0,则可以交换这两个位,从而减少X并增加Y,而无需更改它们的和和Xor。我们可以得出结论,如果X中的某个位等于1,则Y中的相应位也等于1。因此,Y = X +B。考虑到X + Y = X + X + B = A,则1可以获得以下公式来查找X和Y:

  • X =(A – B)/ 2
  • Y = X + B =(A + B)/ 2

还应该注意的是,如果A 或A和B的奇偶校验不同,则答案不存在,输出为-1。如果X和(A – X)不等于X,则答案也为-1。
下面是上述方法的实现:

C++
// CPP program to find the values of
// X and Y using the given equations
 
#include 
using namespace std;
 
// Function to find the
// values of X and Y
void findValues(int a, int b)
{
    // base condition
    if ((a - b) % 2 == 1) {
        cout << "-1";
        return;
    }
 
    // required answer
    cout << (a - b) / 2 << " " << (a + b) / 2;
}
 
// Driver Code
int main()
{
    int a = 12, b = 8;
 
    findValues(a, b);
 
    return 0;
}


Java
// Java program to find the values of
// X and Y using the given equations
import java.io.*;
 
class GFG
{
     
// Function to find the
// values of X and Y
static void findValues(int a, int b)
{
    // base condition
    if ((a - b) % 2 == 1)
    {
            System.out.println ("-1");
        return;
    }
 
    // required answer
    System.out.println (((a - b) / 2)+ " " +
                            ((a + b) / 2));
}
 
    // Driver Code
    public static void main (String[] args)
    {
        int a = 12, b = 8;
        findValues(a, b);
    }
}
 
// This code is contributed by ajit...


Python3
# Python3 program to find the values of
# X and Y using the given equations
 
# Function to find the values of X and Y
def findValues(a, b):
 
    # base condition
    if ((a - b) % 2 == 1):
        print("-1");
        return;
 
    # required answer
    print((a - b) // 2, (a + b) // 2);
 
# Driver Code
a = 12; b = 8;
 
findValues(a, b);
 
# This code is contributed
# by Akanksha Rai


C#
// C# program to find the values of
// X and Y using the given equations
using System;
 
class GFG
{
         
// Function to find the
// values of X and Y
static void findValues(int a, int b)
{
    // base condition
    if ((a - b) % 2 == 1)
    {
            Console.Write ("-1");
        return;
    }
 
    // required answer
    Console.WriteLine(((a - b) / 2)+ " " +
                        ((a + b) / 2));
}
 
// Driver Code
static public void Main ()
{
    int a = 12, b = 8;
    findValues(a, b);
}
}
 
// This code is contributed by @Tushil..


PHP


Javascript


输出:
2 10