题意:
有K只麻球,每只生存一天就会死亡,每只麻球在死之前有可能生下一些麻球,生i个麻球的概率是pi,问m天后所有的麻球都死亡的概率是多少?
思路:
涉及到全概率公式,因为麻球的各种活动都互不影响,所以现在只考虑一直麻球,我们假设f[i]是第i天全部都死亡的概率,那么
f[i] = p0 + p1*f[i-1] + p2*f[i-1]^2 + ...pn-1*f[i - 1]^(n-1)
也就是用前一天的全部死亡概率来代替今天的每一只死亡的概率,又因为今天的每只的生死概率什么的都是独立的,所以p2*f[i-1]^2可以理解成剩下2只,然后两只都死了,这样最后在第m天死光的概率就是f[m],但是这个只是一只麻球的,所有麻球都死光是f[m]^k。
#include<math.h>
#include<stdio.h>
#define N 1000 + 10
double P[N] ,F[N];
int main ()
{
int t ,n ,m ,k ,i ,j ,cas = 1;
scanf("%d" ,&t);
while(t--)
{
scanf("%d %d %d" ,&n ,&k ,&m);
for(i = 0 ;i < n ;i ++)
scanf("%lf" ,&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
" ,cas ++ ,pow(F[m] ,k));
}
return 0;
}