题意:http://www.lightoj.com/volume_showproblem.php?problem=1027
求走出迷宫的期望时间。
由于有的门会回到起点,所以有可能会走很多遍,设能走出去的门的个数为n1,总的个数为n,那么一次走出去的概率为n1/n,走一次的用的平均时间是sum(t)/n,走出来期望的次数为n/n1。
时间期望是:(sum(t)/n)*(n/n1)=sum(t)/n1。
走出来的期望时间 = 需要走次数的期望*平均走一次花费的时间 需要走次数的期望:假设门的总个数是n,可以走出来的门总个数是k,那么我们走出来期望的次数是 n/k. 平均走一次花费的时间: 总时间/n
#include<cstdio> int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int T,t=1; scanf("%d",&T); while(T--) { int n,d; scanf("%d",&n); int n1=n; int sum=0; for(int i=0;i<n;i++) { scanf("%d",&d); if(d>0) sum+=d; else sum-=d,n1--; } printf("Case %d: ",t++); if(n1==0) { printf("inf\n"); continue; } int q=gcd(sum,n1); printf("%d/%d\n",sum/q,n1/q); } return 0; }