uva 11021

题意:有k只麻球,每只活一天就会死亡,临死之前可能会生出一些新的麻球。具体来说,生i个麻球的概率为pi。给定m,求m天后所有麻球死亡的概率。注意,不足m天时就已经全部死亡的情况也算在内。

分析:由于每只麻球的后代独立存活,只需求出一开始只有1只麻球,m天后全部死亡的概率f(m)。由全概率公式,有

f(i)=p0+p1*f(i-1)+p2*f(i-1)^2+........+P(n-1)*f(i-1),

其中pj*f(i-1)^j的含义是这个麻球生了j个后代,他们在i-1天后全部死亡。

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;

int p[1005];
int f[1005];

int main()
{
    int t,Case,n,k,m,i,j;
    cin>>t;
    for(Case=1;Case<=t;Case++)
    {
        cin>>n>>k>>m;
        for(i=0;i<n;i++) scanf("%d",p+i);
        f[0]=0;f[1]=p[0];
        for(i=2;i<m;i++)
        {
            f[i]=0;
            for(j=0;j<n;j++) f[i]+=p[j]*pow(f[i-1],j);
        }
        printf("Case #%d: %.7lf
",Case,pow(f[m],k));
    }
    return 0;
}