hdu-6418 Rikka with Stone-Paper-Scissors(多校九1004)期望
阿新 • • 發佈:2019-02-08
題目連結:
題意:
Rikka和Yuta一起玩剪刀石頭布的遊戲,很有趣對不對~
Y分別有a1,b1,c1個剪刀,石頭,布,R分別有a2,b2,c2個剪刀,石頭,布,R勝Y得一分,平手得零分,R輸Y扣一分,求R得到最大分數的期望。
思路:
R要獲得最大分數,則在Y出剪刀的時候R一定要出石頭,此時R可以得到勝Y的分數但是同時會失去Y可能出布失去的分數
則A出剪刀時B得分的期望是:b2*a1/(a1+b1+c1) - b2*c1/(a1+b1+c1)
依次類推
所以B獲勝的期望是:(a1*b2-b2*c1+b1*c2-a1*c2+a2*c1-a2*b)/(a1+b1+c1)
AC程式碼如下:
#include<stdio.h> #include<math.h> long long GCD(long long a,long long b)//求最大公約數 { if(a<0)//注意可能為負的情況 { a=-1*a; } if(0 == b) return a; else return GCD(b, a % b); } int main() { int t; scanf("%d", &t); while(t--) { long long a1,b1,c1,a2,b2,c2,sum1,sum2,ss; scanf("%lld%lld%lld%lld%lld%lld",&a1,&b1,&c1,&a2,&b2,&c2); sum1=-a1*c2+a1*b2-b1*a2+b1*c2-c1*b2+c1*a2; sum2=a1+b1+c1; if(sum1 % sum2 != 0) { ss=GCD(sum1,sum2); sum1 /= ss; sum2 /= ss; printf("%lld/%lld\n",sum1,sum2); } else printf("%lld\n", sum1/sum2); } return 0; }