题意:有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; }