一道概率题,可以这样考虑:
根据题意,每天只能增加一个Bloodsucker,也就是说n-1个正常人是一个接着一个变成Bloodsucker的,那么所有正常人变成Bloodsucker的天数期望等于所有正常人变成Bloodsucker的天数期望之和。考虑n-1个正常人中第i个变成Bloodsucker的正常人的转变概率为:
P[i] = i*(n-i)/(n*(n-1)/2)则天数期望为(直接从概率的定义考虑):
D[i] = 1/P[i]
于是:
D = sum(D[i])代码如下:
- #include <stdio.h>
-
-
int main() {
-
int T;
-
int n;
-
double p;
-
scanf("%d", &T);
-
while(T--) {
-
scanf("%d %lf", &n, &p);
-
-
double res = 0;
-
double tmp = n*0.5*(n-1)/p;
-
int i;
-
for( i=1; i<=(n-1)/2; i++) {
-
res += tmp/i/(n-i);
-
}
-
res *= 2;
-
res += (n%2==0)?(4*tmp/n/n):0;
-
-
printf("%.3lf\n", res);
-
-
}
-
return 0;
-
}
阅读(1006) | 评论(0) | 转发(0) |