有k只麻球,每只活一天就会死亡临死前可能产生新的麻球。产生i个麻球的概率为P(i) 。给定m,问m天后所有麻球均死亡的概率。不足m天时全死亡的情况也算在内。
对此类概率问题。应掌握一定的套路。
由于每只麻球独立存活,只需求出一开始1只麻球,m天后全部死亡的概率为f(m) 。由全概率公式
f(i) = P0 + P1 * f(i-1) + P2 * f(i-1)2 + P3 * f(i-1)3 ......
其中P(j) * f(i-1)j 含义是这个麻球生了j个后代,它们在i-1天后全部死亡。 于是最终答案 f(m)k
double p[maxn]; double f[maxn]; int n, k, m; int main() { int T; scanf("%d", &T); int K = 1; while (T--) { scanf("%d%d%d", &n, &k, &m); for (int i = 0; i < n; i++) scanf("%lf", &p[i]); f[1] = p[0]; for (int i = 2; i <= m; i++) { f[i] = 0; for (int j = 0; j < n; j++) f[i] += p[j] * pow(f[i - 1], j); } printf("Case #%d: %.7f\n",K++ ,pow(f[m], k)); } }