Related Articles

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

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

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


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 :