uva 11021 推概率公式

来源:互联网 发布:淘宝生e经在哪里订购 编辑:程序博客网 时间:2024/05/16 12:10
// UVa11021 Tribbles// Rujia Liu#include<cstdio>#include<cmath>const int maxn = 1000 + 10;const int maxm = 1000 + 10;int n, k, m;double P[maxn], f[maxm];int main() {  int T;  scanf("%d", &T);  for(int kase = 1; kase <= T; kase++) {    scanf("%d%d%d", &n, &k, &m);    for(int i = 0; i < n; i++) scanf("%lf", &P[i]);    f[0] = 0; 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: %.7lf\n", kase, pow(f[m], k));  }  return 0;}


书上的代码;

题意:k只麻球,每活一天就会死亡,但第二天可能会生一些麻球,具体是 生i个麻球的概率为pi ,求m天后所有麻球都死亡的概率。

思路:考虑全概率公式,求k只麻球m天后全死亡 ,因为死亡是独立事件,应用乘法 ,ans= f[m] ^k ,f[m] 为一只麻球m天后均死亡的概率。对于第i天,

f[i]=p0+p1*f[i-1]^1 +p2*f[i-1]^2 +...p(n-1)*f[i-1]^(n-1) (就是让i-1天所有的出生的麻球全部死亡,那么第i天麻球就没了。。)

最终答案是 f[m]^k.

0 0