# Sum of two numbers if the original ratio and new ratio obtained by adding a given number to each number is given

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:
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++

 `// C++ implementation of the approach``#include ``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

 `// 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

 `# 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#

 `// 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`

## Javascript

 ``

Output:
`12`

Time Complexity: O(1)

Auxiliary Space: O(1)

Previous
Next