题目链接:https://cn.vjudge.net/contest/277062#problem/A
题意:有n扇门,正x代表走x分钟后离开这里,负x代表走x分钟后回到原点,一些不可抗拒的因素,你就算选到一个负的门回到原点,你也不会记得这个门,也就是说你还有可能再次选这个。选到每个门的概率都相同,问离开这里的期望是多少
思路:设离开这里的期望是E,如果有两扇门,a跟-b。则期望E=(a+(b+E))/2。同理,移向一下可求出E
这样想,E是你从这些门离开这里的期望时间,换句话说也就是你在原点的话,只需要E分钟就能离开,那么
E=每扇门出去的时间 / 门的数量。正数的门离开的时间等于自身,负数的门离开的时间等于abs(-x)+E。因为选择这个 门就说明会浪费x分钟,然后回到原点,那么回到原点后出去的期望时间就是E。
#include<algorithm>
#include<string.h>
#include<stdio.h>
using namespace std;
int t,n,x;
int main()
{
scanf("%d",&t);
int carry=1;
while(t--)
{
int sum=0,g=0,p=0,q,flag=0;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d",&x);
if(x>0)
flag=1;
if(x<0)
++g;
sum+=abs(x);
}
if(!flag)
{
printf("Case %d: inf\n",carry++);
continue;
}
q=n-g;
p=sum;
while(__gcd(q,p)!=1)
{
x=__gcd(p,q);
q/=x;
p/=x;
}
printf("Case %d: %d/%d\n",carry++,p,q);
}
}