UVa11021 Tribles

概率 递推

每只麻球都是独立计算的。

可以递推,设f[i]表示一只麻球经过i天死光的概率,那么f[i]的k次方就是k只麻球经过i天死光的概率。

f[i]=p[0]+p[1]*f[i-1]^1+p[2]*f[i-1]^2+...+p[n-1]*f[i-1]^(n-1)

↑直接死掉;生了一只,这一只在i-1天后死了;生了两只,这两只在i-1天后都死了...以此类推

 

 1 /*by SilverN*/
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cstdio>
 6 #include<cmath>
 7 using namespace std;
 8 int n,k,m;
 9 double p[1010],f[1010];
10 int main(){
11     int T;
12     int i,j;
13     scanf("%d",&T);
14     int cas=0;
15     while(T--){
16         scanf("%d%d%d",&n,&k,&m);
17         for(i=0;i<n;i++)scanf("%lf",&p[i]);
18         memset(f,0,sizeof f);
19         f[0]=0;f[1]=p[0];
20         for(i=2;i<=m;i++){
21             for(j=0;j<n;j++){
22                 f[i]+=p[j]*pow(f[i-1],j);
23             }
24         }
25         printf("Case #%d: %.7f\n",++cas,pow(f[m],k));
26     }
27     return 0;
28 }

 

posted @ 2017-01-17 18:12  SilverNebula  阅读(170)  评论(0编辑  收藏  举报
AmazingCounters.com