题目链接:传送门
题意:
Rikka 和 Yuta有剪刀石头布三种卡片,他们两个卡片的数量相同, 只是每个种类的卡片可能不同.
现在给你 a b c 代表Rikka的剪刀 石头 布三个种类卡片的数量
而aa bb cc 则代表Yut卡片的数量
每个回合双方各出一张牌,出完这张牌后舍弃掉,赢的人得加一分,输的人减一分,平局不增不减。
Yuta随机出牌
求Rikka的最大预期得分。
题解: 吉老师说这道题是通过美妙的对称性来出题的,被这道题折磨的我,最后还是队友靠看样例来推导的公式过题。
公式为:(a * (bb - cc) + b * (cc - aa) + c * (aa - bb) )/ (a + b + c) 注意分子可能是负数 取gcd的时候要变号
通过数学归纳法得到的, 我也不会,数学渣的我
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
ll gcd(ll a, ll b) {
if(a < 0) {
a = -a;
}
if(b == 0) {
return a;
}
return gcd(b, a%b);
}
int main() {
int t;
scanf("%d", &t);
while(t--) {
ll a, b, c;
ll aa, bb, cc;
scanf("%lld%lld%lld%lld%lld%lld", &a, &b, &c, &aa, &bb, &cc);
ll ans = a*(bb-cc) + b*(cc-aa) + c*(aa-bb);
ll sum = a+b+c;
if(ans%sum == 0) {
printf("%lld\n",ans/sum);
} else {
ll temp = gcd(ans, sum);
printf("%lld/%lld\n",ans/temp, sum/temp);
}
}
return 0;
}