n个门,每个门权值为t,t>0代表出去花的时间,t<0代表返回原位置花的时间,求出去用时的期望。
当前门用时为t:
(1)这个门如果能出去,则期望值为;
(2)这个门返回原位置,当前期望值为,下次若能出去,则该期望值成为附加时间作为下一个能出去的时间值T=(t+E),所以出去的期望值成
。
所以出迷宫用时期望为,
代表出去门所用的时间,
代表返回门的数量。
整理得:,输入分式要求互质,则利用gcd约分即可。
#include<cstdio>
#include<cmath>
using namespace std;
int a[105];
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;scanf("%d",&n);
int total_t=0,d_back=0;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
total_t+=abs(a[i]);
if(a[i]<0) d_back++;
}
printf("Case %d: ",t++);
if(n==d_back){
printf("inf\n");
continue;
}
int fz,fm;
fz=total_t/gcd(total_t,n-d_back);
fm=(n-d_back)/gcd(total_t,n-d_back);
printf("%d/%d\n",fz,fm);
}
return 0;
}