题意:有K只麻球,每一只活一天就会死,临死前会产仔。 生i 只麻球的概率是 Pi 。问m天后所有麻球均死亡的概率。(不足m天也算)
刚学概率类题,谁是白书上的题,为加深理解,还是记录下来吧。
分析: 由于每只麻球及其后代都是独立存活的,故只需算出刚开始时只有一只麻球,m天后该麻球及其后代都死亡的概率f[m]。 有递推关系和全概率公式有:
f[i] = P0 + P1*f(i-1) + P2*f(i-1)^2 + P3*f(i-1)^3 +......+ Pn-1*f(i-1)^(n-1).
最后显然答案为: f(m)^k
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=1010;
double p[maxn],f[maxn];
int n,m,k;
int main()
{
// freopen("out.txt","w",stdout);
// freopen("in.txt","r",stdin);
int T,cas=1;
scanf("%d",&T);
while(T--)
{
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);
}
}
double ans=pow(f[m],k);
printf("Case #%d: %.7f\n",cas++,ans);
}
return 0;
}