Tribble是麻球?
因为事件都是互相独立的,所以只考虑一只麻球。
设f(i)表示一只麻球i天后它以及后代全部死亡的概率,根据全概率公式:
f(i) = P0 + P1 * f(i-1) + P2 * f(i-1)2 + ... + Pn * f(n)n
每个麻球死亡是独立的,所以Pj * f(i-1)j 表示生了j个麻球,这j个麻球要在i-1天内全部死亡。
1 #include <cstdio> 2 #include <cmath> 3 using namespace std; 4 5 const int maxn = 1000 + 10; 6 double f[maxn], p[maxn]; 7 8 int main() 9 { 10 //freopen("in.txt", "r", stdin); 11 12 int T; 13 scanf("%d", &T); 14 for(int kase = 1; kase <= T; kase++) 15 { 16 int n, k, m; 17 scanf("%d%d%d", &n, &k, &m); 18 for(int i = 0; i < n; i++) scanf("%lf", &p[i]); 19 f[0] = 0; 20 f[1] = p[0]; 21 for(int i = 1; i <= m; i++) 22 { 23 f[i] = 0; 24 for(int j = 0; j < n; j++) f[i] += p[j] * pow(f[i-1], j); 25 } 26 printf("Case #%d: %.7f\n", kase, pow(f[m], k)); 27 } 28 29 return 0; 30 }
代码君
时间: 2024-10-10 06:49:14