数学:概率计算

刘汝佳书上的一道题,UVA11021

一只麻球只能活一天,然后每天会生一次

给出n,k,m

n代表有一只麻球一次最多生n-1只;接下去n行分别是生0到n-1只的概率

k代表一开始有k只麻球;问m天后麻球死光的概率

用f[i]表示一只麻球i天死光的概率

f[i] = p0 + p1 * f(i - 1) + p2 * f(i - 1)^2 + p3 * f(i - 1)^3....pn-1 * f(i - 1)^n-1

递推式的意思是生几只再乘上他们死的概率就好了

算出f[m],答案就是f[m]^k

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 const int maxn=1005;
 5 int n,m,k;
 6 double f[maxn],p[maxn];
 7 int main()
 8 {
 9     int T,cas=1;
10     scanf("%d",&T);
11     while(T--)
12     {
13         memset(f,0,sizeof(f));
14         scanf("%d%d%d",&n,&k,&m);
15         for(int i=0;i<n;i++) scanf("%lf",&p[i]);
16         f[0]=0;
17         f[1]=p[0];
18         for(int i=2;i<=m;i++)
19             for(int j=0;j<n;j++)
20                 f[i]+=p[j]*pow(f[i-1],j);
21         printf("Case #%d: %.7lf
",cas++,pow(f[m],k));
22     }
23     return 0;
24 }
原文地址:https://www.cnblogs.com/aininot260/p/9583812.html