Related Articles
Find K such that |A – K| = |B – K|
• Last Updated : 27 Mar, 2020

Given two integers A and B where (A ≠ B). The task is to find K such that |A – K| = |B – K|. If no such K exists then print -1.

Examples:

Input: A = 2, B = 16
Output: 9
|2 – 9| = |16 – 9| = 7

Input: A = 5, B = 2
Output: -1

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: It is given that A ≠ B. So let A < B then there are three cases:

• K < A: This gives A – K = B – K which gives A = B which is false.
• K > B: This gives K – A = K – B which is also false.
• A ≤ K ≤ B: This gives K – A = B – K which gives 2 * K = A + B

If A + B is odd, there is thus no solution. If A + B is even then the answer is (A + B) / 2.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to find k such that ` `// |a - k| = |b - k| ` `int` `find_k(``int` `a, ``int` `b) ` `{ ` `    ``// If (a + b) is even ` `    ``if` `((a + b) % 2 == 0) ` `        ``return` `((a + b) / 2); ` ` `  `    ``return` `-1; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `a = 2, b = 16; ` ` `  `    ``cout << find_k(a, b); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `class` `GFG ` `{ ` `     `  `// Function to find k such that ` `// |a - k| = |b - k| ` `static` `int` `find_k(``int` `a, ``int` `b) ` `{ ` `    ``// If (a + b) is even ` `    ``if` `((a + b) % ``2` `== ``0``) ` `        ``return` `((a + b) / ``2``); ` ` `  `    ``return` `-``1``; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `a = ``2``, b = ``16``; ` ` `  `    ``System.out.println(find_k(a, b)); ` `} ` `} ` ` `  `// This code is contributed by Code_Mech `

## Python3

 `# Python3 implementation of the approach  ` ` `  `# Function to find k such that  ` `# |a - k| = |b - k|  ` `def` `find_k(a, b) : ` ` `  `    ``# If (a + b) is even  ` `    ``if` `((a ``+` `b) ``%` `2` `=``=` `0``) :  ` `        ``return` `((a ``+` `b) ``/``/` `2``);  ` ` `  `    ``return` `-``1``;  ` ` `  `# Driver code  ` `if` `__name__ ``=``=` `"__main__"` `:  ` ` `  `    ``a ``=` `2``; b ``=` `16``;  ` ` `  `    ``print``(find_k(a, b));  ` ` `  `# This code is contributed by AnkitRai01 `

## C#

 `// C# implementation of the approach  ` `using` `System; ` ` `  `class` `GFG ` `{ ` `     `  `// Function to find k such that ` `// |a - k| = |b - k| ` `static` `int` `find_k(``int` `a, ``int` `b) ` `{ ` `    ``// If (a + b) is even ` `    ``if` `((a + b) % 2 == 0) ` `        ``return` `((a + b) / 2); ` ` `  `    ``return` `-1; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main() ` `{ ` `    ``int` `a = 2, b = 16; ` ` `  `    ``Console.Write(find_k(a, b)); ` `} ` `} ` ` `  `// This code is contributed by chitranayal `

Output:

```9
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :