题意:给出n扇门,每扇门都给出一个数x,若为正数,则表示在x时间后走出迷宫,若为负数,则表示在x时间后回到起点,并忘记刚刚走了哪条路,求最后的期望时间,结果以分数呈现。
题解:期望
设总的期望为
e
e
e。
对于其中的一扇门:
若为正数:走出去的期望为
x
/
n
x/n
x/n。
若为负数:走回来的期望为
x
/
n
x/n
x/n,再走出去的期望为
(
x
+
e
)
/
n
(x+e)/n
(x+e)/n。
把所有门的情况加起来就是
e
e
e,然后解方程求一下。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<cmath>
#include<vector>
#include<fstream>
#include<set>
#include<map>
#include<sstream>
#include<iomanip>
#define ll long long
using namespace std;
int t, n, a[111];
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
int main() {
scanf("%d", &t);
int cas = 0;
while (t--) {
int sa = 0, sb = 0, numa = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
if (a[i] > 0) sa += a[i], numa++;
else sb += abs(a[i]);
}
int fenzi = sa + sb;
int fenmu = numa;
int m = gcd(fenzi, fenmu);
if (fenmu) printf("Case %d: %d/%d\n", ++cas, fenzi / m, fenmu / m);
else printf("Case %d: inf\n", ++cas);
}
return 0;
}