# Find the number which when added to the given ratio a : b, the ratio changes to c : d

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 = 4Output: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 : 4Input:a = 2, b = 3, c = 4, d = 5Output: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++

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

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

## Python

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

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

## Javascript

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

**Output:**

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.