# Find the values of X and Y in the Given Equations

• Last Updated : 15 Apr, 2021

Given two numbers and . Find the values of X and Y in the equations.

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

The task is to make X as minimum as possible. If it is not possible to find any valid values for X and Y then print -1.
Examples:

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

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

Let’s take a look at some bit in X, which is equal to 1. If the respective bit in Y is equal to 0, then one can swap these two bits, thus reducing X and increasing Y without changing their sum and xor. We can conclude that if some bit in X is equal to 1 then the respective bit in Y is also equal to 1. Thus, Y = X + B. Taking into account that X + Y = X + X + B = A, one can obtain the following formulas for finding X and Y:

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

One should also notice that if A < B or A and B have different parity, then the answer doesn’t exist and output is -1. If X and (A – X) not equal to X then the answer is also -1.
Below is the implementation of the above approach :

## 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

 ``
Output:
`2 10`

My Personal Notes arrow_drop_up