【题目链接】

题目意思

T组案例,每组案例两行,第一行三个数字表示第一个人的剪刀牌,石头牌,布牌的数量,第二行表示第二个人的牌的数量,求第一个人赢过第二个人的期望。

Sample Input
4
2 0 0
0 2 0
1 1 1
1 1 1
1 0 0
0 0 1
123 456 789
100 200 1068


Sample Output
2
0
-1
3552/19

解题思路

枚举九种可能情况就过了?赛后吉老师说还要证明公式啥的,好复杂,算了,还是枚举吧。

听说还要特判是个负数?提交还WA了一发,赛后发现负数好像可以取模啊,佛系WA一发。

AC代码

#include <iostream>
#define ll long long
using namespace std;
ll gcd(ll a, ll b)
{
    return a % b == 0 ? b : gcd(b, a%b);
}
int main()
{
    int t;
    scanf("%d", &t);
    while (t--)
    {
        int flag = 0;
        ll a, b, c;
        ll q, w, e;
        scanf("%lld%lld%lld%lld%lld%lld", &a, &b, &c, &q, &w, &e);
        ll qq = (a*(w - e) + b * (e - q) + c * (q - w));
        ll ww = a + b + c;
        if (qq < 0)
        {
            qq = -qq;
            flag = 1;
        }
        if (qq%ww == 0)
        {
            ll ans = qq / ww;
            if (flag == 1)
                printf("-");
            printf("%lld\n", ans);
        }
        else
        {
            ll ac = gcd(qq, ww);
            if (flag == 1)
                printf("-");
            printf("%lld/%lld\n", qq / ac, ww / ac);
        }
    }
}