Given a ratio a : b of two unknown numbers. When both the numbers are incremented by a given integer x, the ratio becomes c : d. The task is to find the sum of the two numbers.
Examples:
Input: a = 2, b = 3, c = 8, d = 9, x = 6
Output: 5
Original numbers are 2 and 3
Original ratio = 2:3
After adding 6, ratio becomes 8:9
2 + 3 = 5
Input: a = 1, b = 2, c = 9, d = 13, x = 5
Output: 12
Approach: Let the sum of the numbers be S. Then, the numbers can be (a * S)/(a + b) and (b * S)/(a + b).
Now, as given:
(((a * S) / (a + b)) + x) / (((b * S) / (a + b)) + x) = c / d or ((a * S) + x * (a + b)) / ((b * S) + x * (a + b)) = c / d So, S = (x * (a + b) * (c - d)) / (ad - bc)
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
// Function to return the sum of numbers // which are in the ration a:b and after // adding x to both the numbers // the new ratio becomes c:d double sum( double a, double b, double c, double d, double x)
{ double ans = (x * (a + b) * (c - d)) / ((a * d) - (b * c));
return ans;
} // Driver code int main()
{ double a = 1, b = 2, c = 9, d = 13, x = 5;
cout << sum(a, b, c, d, x);
return 0;
} |
// Java implementation of the above approach class GFG
{ // Function to return the sum of numbers
// which are in the ration a:b and after
// adding x to both the numbers
// the new ratio becomes c:d
static double sum( double a, double b,
double c, double d,
double x)
{
double ans = (x * (a + b) * (c - d)) /
((a * d) - (b * c));
return ans;
}
// Driver code
public static void main (String[] args)
{
double a = 1 , b = 2 , c = 9 , d = 13 , x = 5 ;
System.out.println(sum(a, b, c, d, x));
}
} // This code is contributed by ihritik |
# Python3 implementation of the approach # Function to return the sum of numbers # which are in the ration a:b and after # adding x to both the numbers # the new ratio becomes c:d def sum (a, b, c, d, x):
ans = ((x * (a + b) * (c - d)) /
((a * d) - (b * c)));
return ans;
# Driver code if __name__ = = '__main__' :
a, b, c, d, x = 1 , 2 , 9 , 13 , 5 ;
print ( sum (a, b, c, d, x));
# This code is contributed by PrinciRaj1992 |
// C# implementation of the above approach using System;
class GFG
{ // Function to return the sum of numbers
// which are in the ration a:b and after
// adding x to both the numbers
// the new ratio becomes c:d
static double sum( double a, double b,
double c, double d,
double x)
{
double ans = (x * (a + b) * (c - d)) /
((a * d) - (b * c));
return ans;
}
// Driver code
public static void Main ()
{
double a = 1, b = 2,
c = 9, d = 13, x = 5;
Console.WriteLine(sum(a, b, c, d, x));
}
} // This code is contributed by ihritik |
<script> // javascript implementation of the above approach // Function to return the sum of numbers // which are in the ration a:b and after // adding x to both the numbers // the new ratio becomes c:d function sum(a , b, c , d, x)
{ var ans = (x * (a + b) * (c - d)) /
((a * d) - (b * c));
return ans;
} // Driver code var a = 1, b = 2, c = 9, d = 13, x = 5;
document.write(sum(a, b, c, d, x)); // This code is contributed by 29AjayKumar </script> |
12
Time Complexity: O(1)
Auxiliary Space: O(1)