LightOJ - 1027 (期望基础)
题目链接:LightOJ - 1027
题目大意: 给你n个门,每次进每个门的概率都是一样的,正数代表你x分钟后可以离开这里,负数代表你x分钟后回到这里。求预期离开的时间, 如果时间无限大,输出inf。
数据范围:
解题思路:
用
- 选了正数, 概率为
1n , 期望为1k∗ni , 结束。 - 选了负数, 概率为
1n ,xi 分钟之后回到原点, 那么期望为1n∗(E+xi)
如果正数个数为0, 答案为inf。
否则期望为
其中
最后化简结果:
代码:
/********************************************
*Author* :��ZZZZone
*Created Time* : 五 10/13 18:48:36 2017
* Ended Time* : 五 10/13 18:54:58 2017
*********************************************/
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <stack>
using namespace std;
typedef pair<int, int> PII;
typedef long long LL;
typedef unsigned long long ULL;
int T, n, Case;
int gcd(int a, int b){
if(!b) return a;
else return gcd(b, a % b);
}
int main()
{
scanf("%d", &T);
while(T--){
scanf("%d", &n);
int cnt = 0, sum = 0;
for(int i = 1; i <= n; i++){
int x;
scanf("%d", &x);
if(x > 0) cnt++;
sum += abs(x);
}
printf("Case %d: ", ++Case);
if(cnt == 0) printf("inf\n");
else{
int Gcd = gcd(sum, cnt);
printf("%d/%d\n", sum / Gcd, cnt / Gcd);
}
}
return 0;
}
在此输入正文