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 <bits/stdc++.h> 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
<?php // PHP program to find probability // to C win the match // Find gcd() function __gcd( $a , $b ) { if ( $b == 0) return $a ; return __gcd( $b , $a % $b ); } // function to find probability // to C win the match function Probability( $A , $B ) { $C = 6 - max( $A , $B ); $gcd = __gcd( $C , 6); echo ( $C / $gcd ) . "/" . (6 / $gcd ); } // Driver code $A = 2; $B = 4; // function call Probability( $A , $B ); // This code is contributed by mits ?> |
Javascript
<script> // Javascript program to find probability // to C win the match // Recursive function to return // gcd of a and b function __gcd(a, 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 function Probability(A, B) { let C = 6 - Math.max(A, B); let gcd = __gcd(C, 6); document.write(parseInt(C / gcd, 10) + "/" + parseInt(6 / gcd, 10)); } let A = 2, B = 4; // function call Probability(A, B); </script> |
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)))
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!