Friday, January 10, 2025
Google search engine
HomeData Modelling & AIMaking three numbers equal with the given operations

Making three numbers equal with the given operations

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)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments