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

- A = X + Y
- 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 = 8Output :X = 2, Y = 10Input :A = 12, B = 9Output :-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 <bits/stdc++.h>` `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

`<?php` `// PHP program to find the values of` `// X and Y using the given equations` `// Function to find the values` `// of X and Y` `function` `findValues(` `$a` `, ` `$b` `)` `{` ` ` `// base condition` ` ` `if` `((` `$a` `- ` `$b` `) % 2 == 1)` ` ` `{` ` ` `echo` `"-1"` `;` ` ` `return` `;` ` ` `}` ` ` `// required answer` ` ` `echo` `(` `$a` `- ` `$b` `) / 2, ` `" "` `,` ` ` `(` `$a` `+ ` `$b` `) / 2;` `}` `// Driver Code` `$a` `= 12;` `$b` `= 8;` `findValues(` `$a` `, ` `$b` `);` `// This code is contributed by jit_t` `?>` |

## Javascript

`<script>` `// Javascript program to find the values of` `// X and Y using the given equations` `// Function to find the values` `// of X and Y` `function` `findValues(a, b)` `{` ` ` `// base condition` ` ` `if` `((a - b) % 2 == 1)` ` ` `{` ` ` `document.write( ` `"-1"` `);` ` ` `return` `;` ` ` `}` ` ` `// required answer` ` ` `document.write( (a - b) / 2+ ` `" "` `+` ` ` `(a + b) / 2);` `}` `// Driver Code` `let a = 12;` `let b = 8;` `findValues(a, b);` `// This code is contributed` `// by bobby` `</script>` |

**Output:**

2 10

Attention reader! Don’t stop learning now. Get hold of all the important Comcompetitivepetitve Programming concepts with the **Competitive Programming Live ** course.