这种水题,博主不用解释相信大家都可以看懂:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#include<vector>
using namespace std;
#define REP(i, a, b) for(int i = (a), _end_ = (b);i <= _end_; ++ i)
const int maxn = 1010;
int n, m, k;
double p[maxn], f[maxn];
int main() {
int T, cas = 1;
scanf("%d", &T);
while(T--) {
scanf("%d%d%d", &n, &k, &m);
memset((f), 0, sizeof(f));
REP(i, 0, n - 1)
scanf("%lf", &p[i]);
f[0] = 0;f[1] = p[0];
REP(i, 2, m) {
REP(j, 0, n - 1)
f[i] += p[j] * pow(f[i - 1], j);
}
double ans = pow(f[m], k);
printf("Case #%d: %.7lf\n", cas++, ans);
}
return 0;
}