Given four integers a, b, c and d. The task is to find the number X which when added to the numbers a and b the ratio changes from a : b to c : d.
Examples:
Input: a = 3, b = 6, c = 3, d = 4
Output: 6
When 6 is added to a and b
a = 3 + 6 = 9
b = 6 + 6 = 12
And, the new ratio will be 9 : 12 = 3 : 4
Input: a = 2, b = 3, c = 4, d = 5
Output: 2
Approach: Old ratio is a : b and new ratio is c : d. Let the required number be X,
So, (a + X) / (b + X) = c / d
or, ad + dx = bc + cx
or, x(d – c) = bc – ad
So, x = (bc – ad) / (d – c)
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
// Function to return the // required number X int getX( int a, int b, int c, int d)
{ int X = (b * c - a * d) / (d - c);
return X;
} // Driver code int main()
{ int a = 2, b = 3, c = 4, d = 5;
cout << getX(a, b, c, d);
return 0;
} |
// Java implementation of the approach import java.io.*;
class GFG
{ // Function to return the // required number X static int getX( int a, int b, int c, int d)
{ int X = (b * c - a * d) / (d - c);
return X;
} // Driver code public static void main (String[] args)
{ int a = 2 , b = 3 , c = 4 , d = 5 ;
System.out.println (getX(a, b, c, d));
} } // The code is contributed by ajit..@23 |
# Python3 implementation of the approach # Function to return the # required number X def getX(a, b, c, d):
X = (b * c - a * d) / / (d - c)
return X
# Driver code a = 2
b = 3
c = 4
d = 5
print (getX(a, b, c, d))
# This code is contributed by mohit kumar 29 |
// C# implementation of the approach using System;
class GFG
{ // Function to return the // required number X static int getX( int a, int b, int c, int d)
{ int X = (b * c - a * d) / (d - c);
return X;
} // Driver code static public void Main ()
{ int a = 2, b = 3, c = 4, d = 5;
Console.Write(getX(a, b, c, d));
} } // The code is contributed by Tushil. |
<script> // javascript implementation of the approach // Function to return the // required number X function getX(a , b , c , d)
{ var X = (b * c - a * d) / (d - c);
return X;
} // Driver code var a = 2, b = 3, c = 4, d = 5;
document.write(getX(a, b, c, d)); // This code is contributed by 29AjayKumar </script> |
2
Time Complexity: O(1), since there is a basic arithmetic operation that takes constant time.
Auxiliary Space: O(1), since no extra space has been taken.