http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84305#problem/A
一道很好的概率期望题目,没用到dp不过,再次理解了统计平均(期望E)
/*
light_oj 1027 期望DP
并没有什么递推
题意:
n个传送门,m个可以逃离,其他的
求解:
E表示成功逃离的时间期望,E1表示逃离时间的统计平均,E2表示返回原地的统计平均
p表示成功逃离的概率,p = m/n
事件可分解为一次性成功逃离,返回原地后再逃离,利用全期望公式有
E = p*E1 + (1-p)*(E2 + E)
(返回原地消耗E2的时间,再逃离还是要花费E)
E1 = s1/m, E2 = s2/(n-m);s1是正的时间和,s2是负的时间和取绝对值
整理得到E = (s1 + s2 )/m,gcd求最大公约数表示下就可以了
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<vector>
#include<set>
#include<map>
#include<algorithm>
#include<sstream>
#define eps 1e-9
#define pi acos(-1)
#define long long ll
#define M 10
#define N 1010
using namespace std;
const int _max = 1e5 + 10;
int x,n,m,s1,s2,s;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
#endif // ONLINE_JUDGE
int T;cin>>T;int cnt =1;
while(T--){
scanf("%d",&n);
s1 = s2 = m = 0;
for(int i = 0; i < n; ++ i){
scanf("%d",&x);
if(x>0) s1+=x,m++;
else s2+=abs(x);
}
printf("Case %d: ",cnt++);
if(!s1) {puts("inf");continue;}
s = s1 + s2;
int d = gcd(s,m);
printf("%d/%d\n",s/d,m/d);
}
return 0;
}