# Probability of A winning the match when individual probabilities of hitting the target given

Given four integers **a**, **b**, **c** and **d**. Player **A** & **B** try to score a penalty. Probability of A shooting the target is **a / b** while probability of B shooting the target is **c / d**. The player who scores the penalty first wins. The task is to find the probability of A winning the match.**Examples:**

Input:a = 1, b = 3, c = 1, d = 3Output:0.6Input:a = 1, b = 2, c = 10, d = 11Output:0.52381

**Approach:** If we consider variables **K = a / b** as the probability of A shooting the target and **R = (1 – (a / b)) * (1 – (c / d))** as the probability that A as well as B both missing the target.

Therefore, the solution forms a Geometric progression **K * R ^{0} + K * R^{1} + K * R^{2} + …..** whose sum is

**(K / 1 – R)**. After putting the values of

**K**and

**R**we get the formula as

**K * (1 / (1 – (1 – r) * (1 – k)))**.

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 probability of A winning` `double` `getProbability(` `int` `a, ` `int` `b, ` `int` `c, ` `int` `d)` `{` ` ` `// p and q store the values` ` ` `// of fractions a / b and c / d` ` ` `double` `p = (` `double` `)a / (` `double` `)b;` ` ` `double` `q = (` `double` `)c / (` `double` `)d;` ` ` `// To store the winning probability of A` ` ` `double` `ans = p * (1 / (1 - (1 - q) * (1 - p)));` ` ` `return` `ans;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `a = 1, b = 2, c = 10, d = 11;` ` ` `cout << getProbability(a, b, c, d);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach` `class` `GFG` `{` `// Function to return the probability` `// of A winning` `static` `double` `getProbability(` `int` `a, ` `int` `b,` ` ` `int` `c, ` `int` `d)` `{` ` ` `// p and q store the values` ` ` `// of fractions a / b and c / d` ` ` `double` `p = (` `double` `) a / (` `double` `) b;` ` ` `double` `q = (` `double` `) c / (` `double` `) d;` ` ` `// To store the winning probability of A` ` ` `double` `ans = p * (` `1` `/ (` `1` `- (` `1` `- q) *` ` ` `(` `1` `- p)));` ` ` `return` `ans;` `}` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `a = ` `1` `, b = ` `2` `, c = ` `10` `, d = ` `11` `;` ` ` `System.out.printf(` `"%.5f"` `,` ` ` `getProbability(a, b, c, d));` `}` `}` `// This code contributed by Rajput-Ji` |

## Python3

`# Python3 implementation of the approach` `# Function to return the probability` `# of A winning` `def` `getProbability(a, b, c, d) :` ` ` `# p and q store the values` ` ` `# of fractions a / b and c / d` ` ` `p ` `=` `a ` `/` `b;` ` ` `q ` `=` `c ` `/` `d;` ` ` ` ` `# To store the winning probability of A` ` ` `ans ` `=` `p ` `*` `(` `1` `/` `(` `1` `-` `(` `1` `-` `q) ` `*` `(` `1` `-` `p)));` ` ` ` ` `return` `round` `(ans,` `5` `);` `# Driver code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `a ` `=` `1` `; b ` `=` `2` `; c ` `=` `10` `; d ` `=` `11` `;` ` ` `print` `(getProbability(a, b, c, d));` `# This code is contributed by Ryuga` |

## C#

`// C# implementation of the approach` `using` `System;` `class` `GFG` `{` `// Function to return the probability` `// of A winning` `public` `static` `double` `getProbability(` `int` `a, ` `int` `b,` ` ` `int` `c, ` `int` `d)` `{` ` ` `// p and q store the values` ` ` `// of fractions a / b and c / d` ` ` `double` `p = (` `double` `) a / (` `double` `) b;` ` ` `double` `q = (` `double` `) c / (` `double` `) d;` ` ` `// To store the winning probability of A` ` ` `double` `ans = p * (1 / (1 - (1 - q) *` ` ` `(1 - p)));` ` ` `return` `ans;` `}` `// Driver code` `public` `static` `void` `Main(` `string` `[] args)` `{` ` ` `int` `a = 1, b = 2, c = 10, d = 11;` ` ` `Console.Write(` `"{0:F5}"` `,` ` ` `getProbability(a, b, c, d));` `}` `}` `// This code is contributed by Shrikant13` |

## PHP

`<?php` `// PHP implementation of the approach` `// Function to return the probability` `// of A winning` `function` `getProbability(` `$a` `, ` `$b` `, ` `$c` `, ` `$d` `)` `{` ` ` `// p and q store the values` ` ` `// of fractions a / b and c / d` ` ` `$p` `= ` `$a` `/ ` `$b` `;` ` ` `$q` `= ` `$c` `/ ` `$d` `;` ` ` `// To store the winning probability of A` ` ` `$ans` `= ` `$p` `* (1 / (1 - (1 - ` `$q` `) * (1 - ` `$p` `)));` ` ` `return` `round` `(` `$ans` `,6);` `}` `// Driver code` `$a` `= 1;` `$b` `= 2;` `$c` `= 10;` `$d` `= 11;` `echo` `getProbability(` `$a` `, ` `$b` `, ` `$c` `, ` `$d` `);` `// This code is contributed by chandan_jnu` `?>` |

## Javascript

`<script>` `// JavaScript implementation of the approach ` `// Function to return the probability` `// of A winning` ` ` `function` `getProbability(a , b , c , d) {` ` ` `// p and q store the values` ` ` `// of fractions a / b and c / d` ` ` `var` `p = a / b;` ` ` `var` `q = c / d;` ` ` `// To store the winning probability of A` ` ` `var` `ans = p * (1 / (1 - (1 - q) * (1 - p)));` ` ` `return` `ans;` ` ` `}` ` ` `// Driver code` ` ` ` ` `var` `a = 1, b = 2, c = 10, d = 11;` ` ` `document.write( getProbability(a, b, c, d).toFixed(5));` `// This code contributed by aashish1995` `</script>` |

**Output:**

0.52381

**Time Complexity:** O(1)**Auxiliary Space: **O(1)