# Making three numbers equal with the given operations

• Last Updated : 04 Aug, 2021

Given four positive integers A, B, C and K. The task is to check if it is possible to equalize the three integers A, B and C with the help of K and make K equal to 0. In one operation, you can subtract any value form K (if it remains greater than equal to 0 after subtraction) and add the new value to any of the three integers A, B or C.
Examples:

Input: A = 6, B = 3, C = 2, K = 7
Output: Yes
Operation 1: Add 3 to B and subtract 3 from K.
A = 6, B = 6, C = 2 and K = 4
Operation 2: Add 4 to C and subtract 4 from K.
A = 6, B = 6, C = 6 and K = 0
Input: A = 10, B = 20, C = 17, K = 15
Output: No

Approach: Check whether it is possible to equalize the three numbers by sorting the three numbers and subtracting the value of K by the sum of the difference of 3rd and 2nd element and the 3rd and 1st element. If K is still greater than 0 and can be divided among the three elements equally then only the three elements can be made equal and K can be made equal to 0.
Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function that returns true if a, b and c can``// be made equal with the given operations``bool` `canBeEqual(``int` `a, ``int` `b, ``int` `c, ``int` `k)``{``    ``int` `arr[3];``    ``arr[0] = a;``    ``arr[1] = b;``    ``arr[2] = c;` `    ``// Sort the three numbers``    ``sort(arr, arr + 3);` `    ``// Find the sum of difference of the 3rd and``    ``// 2nd element and the 3rd and 1st element``    ``int` `diff = 2 * arr[2] - arr[1] - arr[0];` `    ``// Subtract the difference from k``    ``k = k - diff;` `    ``// Check the required condition``    ``if` `(k < 0 || k % 3 != 0)``        ``return` `false``;` `    ``return` `true``;``}` `// Driver code``int` `main()``{``    ``int` `a1 = 6, b1 = 3, c1 = 2, k1 = 7;` `    ``if` `(canBeEqual(a1, b1, c1, k1))``        ``cout << ``"Yes"``;``    ``else``        ``cout << ``"No"``;` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``import` `java.util.*;` `class` `GFG``{` `// Function that returns true if a, b and c can``// be made equal with the given operations``static` `boolean` `canBeEqual(``int` `a, ``int` `b, ``int` `c, ``int` `k)``{``    ``int` `[]arr = ``new` `int``[``3``];``    ``arr[``0``] = a;``    ``arr[``1``] = b;``    ``arr[``2``] = c;` `    ``// Sort the three numbers``    ``Arrays.sort(arr);` `    ``// Find the sum of difference of the 3rd and``    ``// 2nd element and the 3rd and 1st element``    ``int` `diff = ``2` `* arr[``2``] - arr[``1``] - arr[``0``];` `    ``// Subtract the difference from k``    ``k = k - diff;` `    ``// Check the required condition``    ``if` `(k < ``0` `|| k % ``3` `!= ``0``)``        ``return` `false``;` `    ``return` `true``;``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `a1 = ``6``, b1 = ``3``, c1 = ``2``, k1 = ``7``;` `    ``if` `(canBeEqual(a1, b1, c1, k1))``        ``System.out.print(``"Yes"``);``    ``else``        ``System.out.print(``"No"``);``}``}` `// This code is contributed by PrinciRaj1992`

## Python3

 `# Python3 implementation of the approach` `# Function that returns true if a, b and c can``# be made equal with the given operations``def` `canBeEqual(a, b, c, k) :` `    ``arr ``=` `[``0``] ``*` `3``;``    ``arr[``0``] ``=` `a;``    ``arr[``1``] ``=` `b;``    ``arr[``2``] ``=` `c;` `    ``# Sort the three numbers``    ``arr.sort()` `    ``# Find the sum of difference of the 3rd and``    ``# 2nd element and the 3rd and 1st element``    ``diff ``=` `2` `*` `arr[``2``] ``-` `arr[``1``] ``-` `arr[``0``];` `    ``# Subtract the difference from k``    ``k ``=` `k ``-` `diff;` `    ``# Check the required condition``    ``if` `(k < ``0` `or` `k ``%` `3` `!``=` `0``) :``        ``return` `False``;` `    ``return` `True``;` `# Driver code``if` `__name__ ``=``=` `"__main__"` `:` `    ``a1 ``=` `6``; b1 ``=` `3``; c1 ``=` `2``; k1 ``=` `7``;` `    ``if` `(canBeEqual(a1, b1, c1, k1)) :``        ``print``(``"Yes"``);``    ``else` `:``        ``print``(``"No"``);` `# This code is contributed by AnkitRai01`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{` `// Function that returns true if a, b and c can``// be made equal with the given operations``static` `bool` `canBeEqual(``int` `a, ``int` `b, ``int` `c, ``int` `k)``{``    ``int` `[]arr = ``new` `int``[3];``    ``arr[0] = a;``    ``arr[1] = b;``    ``arr[2] = c;` `    ``// Sort the three numbers``    ``Array.Sort(arr);` `    ``// Find the sum of difference of the 3rd and``    ``// 2nd element and the 3rd and 1st element``    ``int` `diff = 2 * arr[2] - arr[1] - arr[0];` `    ``// Subtract the difference from k``    ``k = k - diff;` `    ``// Check the required condition``    ``if` `(k < 0 || k % 3 != 0)``        ``return` `false``;` `    ``return` `true``;``}` `// Driver code``public` `static` `void` `Main(String[] args)``{``    ``int` `a1 = 6, b1 = 3, c1 = 2, k1 = 7;` `    ``if` `(canBeEqual(a1, b1, c1, k1))``        ``Console.Write(``"Yes"``);``    ``else``        ``Console.Write(``"No"``);``}``}` `// This code is contributed by 29AjayKumar`

## Javascript

 ``
Output:
`Yes`

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up