A Dangerous Maze LightOJ - 1027
题目大意:
陷阱里有n扇门,x[1], x[2].......x[n],
若x[i]为正数,则经过x[i]的时间将会逃出陷阱,
若x[i]为负数,则经过abs(x[i])的时间将会回到起点
求:离开陷阱的期望值?
设期望为E,走一步就逃出陷阱的概率为p1,其平均时间为T1,
走一步回到原点的概率为p2,平均时间为T2.
注:(p1+p2=1)
所以:E = p1*T1 + p2*(T2+E) = ∑abs(Xi) / 正数个数
#include<cstdio>
#include<cstdlib>
int gcd(int a, int b)
{
return b == 0? a : gcd(b, a%b);
}
int main()
{
int T, n, i, z, count, sum;
int x[120];
scanf("%d", &T);
for(z = 1; z <= T; z++)
{
count = 0;
sum = 0;
scanf("%d", &n);
for(i = 1; i <= n; i++)
{
scanf("%d", &x[i]);
if (x[i] < 0)
count++;///负数的个数
sum += abs(x[i]);///所有数绝对值之和
}
int m = n-count;///正数的个数
if (count == n)
printf("Case %d: inf\n", z);
else
{
int t = gcd(sum, m);///最大公约数
printf("Case %d: %d/%d\n", z, sum/t, m/t);
}
}
return 0;
}