【CodeForces】9A-Die Roll
Question
三个人掷骰子,前两个人的得分分别是Y和W,问第三个人胜利的概率(第三个人得分不小于Y、W)?结果输出格式为\(A/B\),如果概率为0则输出\(0/1\),如果概率为1则输出\(1/1\)
Solution
解法1
通过公式\(p= \frac{6-max(Y,W) +1}{6}\)得到概率,然后将概率转换成要求的输出格式(化简)。因为化简比较费劲,而这里的结果是有限的,所以可以直接输出概率。
# Python
print(['1/1', '5/6', '2/3', '1/2', '1/3', '1/6'][max(map(int, input().split()))-1])
// C++
include <iostream>
using namespace std;
int main() {
int y,w;
string p[6]={"1/6", "1/3", "1/2", "2/3", "5/6", "1/1"};
cin>>y>>w;
cout<<p[6-max(y,w)];
return 0;
}
解法2
得到结果后,进行化简。通过辗转相除法求分子分母的最大公约数。
// C++
include <iostream>
using namespace std;
int gcd(int a, int b) { // 求最大公约数
if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {
int a, b;
cin >> a >> b;
int e = 6 - max(a, b) + 1;
int g = gcd(e, 6);
cout << e / g << '/' << 6 / g << endl;
return 0;
}