【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;
}
posted @ 2018-12-04 20:36  一只背影  阅读(517)  评论(0编辑  收藏  举报