首先给出
k
k
k个毛球,然后这些毛球的寿命都只有一天。并且他们会有
p
i
p_{i}
pi的概率生繁衍出
i
i
i个新的毛球。
i
i
i的范围是在
1
1
1到
n
n
n的,然后求问第
m
m
m天的时候这些毛球全部死亡的概率是多少。
k
k
k个毛球在
m
m
m死亡的概率相等且独立。考虑
1
1
1个毛球在
m
m
m天死亡的概率是
f
m
f_{m}
fm,
k
k
k个毛球在第
m
m
m天死亡的概率为
(
f
m
)
k
(f_{m})^k
(fm)k。
f
i
=
∑
j
=
0
n
−
1
p
j
(
f
i
−
1
)
j
f_{i}=\sum_{j=0}^{n-1}p_{j}(f_{i-1})^{j}
fi=∑j=0n−1pj(fi−1)j,而初始条件第一天死亡的概率
f
1
=
p
0
f_{1}=p_{0}
f1=p0。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll INF=LONG_LONG_MAX;
const int N=1e3+7;
double dp[N];
double p[N];
int main() {
int T,kase=0;
scanf("%d",&T);
while(T--) {
int n,k,m;
scanf("%d%d%d",&n,&k,&m);
for(int i=0;i<n;i++)
scanf("%lf",&p[i]);
memset(dp,0,sizeof(dp));
dp[1]=p[0];
for(int i=2;i<=m;i++) {
for(int j=0;j<n;j++) {
dp[i]+=p[j]*pow(dp[i-1],j);
}
}
printf("Case #%d: %.7lf\n",++kase,pow(dp[m],k));
}
return 0;
}