hdu-6418 Rikka with Stone-Paper-Scissors(多校九1004)期望

题目链接:

Rikka with Stone-Paper-Scissors

题意:

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
#include
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;
}

 

你可能感兴趣的:(hdu-6418 Rikka with Stone-Paper-Scissors(多校九1004)期望)