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

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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 

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Output:

12


My Personal Notes arrow_drop_up

Recommended Posts: