Probability of getting more value in third dice throw

• Difficulty Level : Hard
• Last Updated : 11 Jul, 2022

Given that the three players playing a game of rolling dice. Player1 rolled a die got A and player2 rolled a die got B. The task is to find the probability of player3 to win the match and Player3 wins if he gets more than both of them.

Examples:

```Input: A = 2, B = 3
Output: 1/2
Player3 wins if he gets 4 or 5 or 6

Input: A = 1, B = 2
Output: 2/3
Player3 wins if he gets 3 or 4 or 5 or 6 ```

Approach: The idea is to find the maximum of A and B and then 6-max(A, B) gives us the remaining numbers C should get to win the match. So, one can find the answer dividing 6-max(A, B) and 6 with GCD of these two.

C++

 `// CPP program to find probability to C win the match``#include ``using` `namespace` `std;` `// function to find probability to C win the match``void` `Probability(``int` `A, ``int` `B)``{``    ``int` `C = 6 - max(A, B);` `    ``int` `gcd = __gcd(C, 6);` `    ``cout << C / gcd << ``"/"` `<< 6 / gcd;``}` `// Driver code``int` `main()``{``    ``int` `A = 2, B = 4;` `    ``// function call``    ``Probability(A, B);` `    ``return` `0;``}`

Java

 `//  Java program to find probability to C win the match` `import` `java.io.*;` `class` `GFG {``// Recursive function to return gcd of a and b``    ``static` `int` `__gcd(``int` `a, ``int` `b)``    ``{``        ``// Everything divides 0 ``        ``if` `(a == ``0``)``          ``return` `b;``        ``if` `(b == ``0``)``          ``return` `a;``       ` `        ``// base case``        ``if` `(a == b)``            ``return` `a;``       ` `        ``// a is greater``        ``if` `(a > b)``            ``return` `__gcd(a-b, b);``        ``return` `__gcd(a, b-a);``    ``}``    ` `  ` `// function to find probability to C win the match``static` `void` `Probability(``int` `A, ``int` `B)``{``    ``int` `C = ``6` `- Math.max(A, B);` `    ``int` `gcd = __gcd(C, ``6``);` `    ``System.out.print( C / gcd + ``"/"` `+ ``6` `/ gcd);``}` `// Driver code` `    ``public` `static` `void` `main (String[] args) {``    ``int` `A = ``2``, B = ``4``;` `    ``// function call``    ``Probability(A, B);``    ``}``}``// This code is contributed by shs..`

Python 3

 `# Python 3 program to find probability``# to C win the match` `# import gcd() from math lib.``from` `math ``import` `gcd` `# function to find probability``# to C win the match``def` `Probability(A, B) :``    ``C ``=` `6` `-` `max``(A, B)``    ` `    ``__gcd ``=` `gcd(C, ``6``)``    ` `    ``print``(C ``/``/` `__gcd, ``"/"``, ``6` `/``/` `__gcd)` `# Driver Code``if` `__name__ ``=``=` `"__main__"` `:``    ` `    ``A, B ``=` `2``, ``4` `    ``# function call``    ``Probability(A, B)``    ` `# This code is contributed by ANKITRAI1`

C#

 `// C# program to find probability``// to C win the match``using` `System;` `class` `GFG``{``    ` `// Recursive function to return``// gcd of a and b``static` `int` `__gcd(``int` `a, ``int` `b)``{``    ``// Everything divides 0``    ``if` `(a == 0)``        ``return` `b;``    ``if` `(b == 0)``        ``return` `a;``    ` `    ``// base case``    ``if` `(a == b)``        ``return` `a;``    ` `    ``// a is greater``    ``if` `(a > b)``        ``return` `__gcd(a - b, b);``    ``return` `__gcd(a, b - a);``}` `// function to find probability``// to C win the match``static` `void` `Probability(``int` `A, ``int` `B)``{``    ``int` `C = 6 - Math.Max(A, B);` `    ``int` `gcd = __gcd(C, 6);` `    ``Console.Write(C / gcd + ``"/"` `+ 6 / gcd);``}` `// Driver code``static` `public` `void` `Main ()``{``    ``int` `A = 2, B = 4;``    ` `    ``// function call``    ``Probability(A, B);``}``}` `// This code is contributed by ajit.`

PHP

 ``

Javascript

 ``

Output:

`1/3`

Time Complexity: O(log(min(a, b))), where a and b are two parameters of gcd.

Auxiliary Space: O(log(min(a, b)))

My Personal Notes arrow_drop_up