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 from 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 <bits/stdc++.h> 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
<script> // Javascript implementation of the approach // Function that returns true if a, b and c can // be made equal with the given operations function canBeEqual(a, b, c, k) { var arr = Array(3); arr[0] = a; arr[1] = b; arr[2] = c; // Sort the three numbers arr.sort((a,b)=> a-b); // Find the sum of difference of the 3rd and // 2nd element and the 3rd and 1st element var 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 var a1 = 6, b1 = 3, c1 = 2, k1 = 7; if (canBeEqual(a1, b1, c1, k1)) document.write( "Yes" ); else document.write( "No" ); // This code is contributed by rrrtnx. </script> |
Yes
Time Complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!