题目链接:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1962
题目大意:
全概率公式:把样本空间S分成若干个不相交的部分B1, B2, B3,…,Bn,则
这里P(A|B)表示在B事件发生的情况下,A事件发生的概率。

思路:那么按照生麻雀的数量来划分样本空间。

#include<bits/stdc++.h>
#define LL long long
using namespace std;

double f[1005];
double p[1005];
int main()
{
    int t, T=1;
    scanf("%d", &t);
    while(t--){
        memset(f, 0, sizeof(f));
        int n, k, m;
        scanf("%d%d%d", &n, &k, &m);
        for(int i=0; i<n; i++){
            scanf("%lf", &p[i]);
        }
        f[1]=p[0];
        for(int i=2; i<=m; i++){
            for(int j=0; j<n; j++){
                f[i]+=p[j]*pow(f[i-1], j);
            }
        }
        printf("Case #%d: %.7f\n", T++, pow(f[m], k));
    }

    return 0;
}