设f[i]表示一只毛球在i天后全部死亡的概率,那么结果可由递推得到,即
f[i]=∑j=0n−1p[j]∗f[i−1]j
最终结果为 f[m]k
CODE:
#include<cmath>
#include<cstdio>
double p[1005];
double f[1005];
int T,n,m,k;
int main()
{
scanf("%d",&T);
for(int Case=1;Case<=T;Case++)
{
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",Case,pow(f[m],k));
}
return 0;
}
总结:以后做题的时候可以考虑是否可以在求出一个的情况后得出总答案的方法。