Open In App

Making three numbers equal with the given operations

Last Updated : 21 Jun, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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>


Output: 

Yes

 

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



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads