您的位置:首页 > 其它

UVa 11021 麻球繁衍

2017-04-08 19:27 465 查看
https://vjudge.net/problem/UVA-11021

题意:
有k只麻球,每只活一天就会死亡,临死之前可能会生出一些新的麻球。具体来说,生i个麻球的概率为Pi。给定m,求m天后所有麻球均死亡的概率。

思路:

每只麻球都是独立存活的,也就是说如果一开始如果有两只麻球,我们只需要求出一只麻球的情况就可以了,因为另外一只麻球的情况和这一只是一样的。设f(m)表示初始1只麻球,到第m天全部死亡的概率。

根据全概率公式:



f的上标代表的是生了几只麻球,因为每只麻球的死亡是独立的,所以把它们乘起来即可。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;

const int maxn=1000+5;

int n,k,m;
double p[maxn];
double f[maxn];

int main()
{
//freopen("D:\\input.txt","r",stdin);
int T;
int kase=0;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&k,&m);
for(int i=0;i<n;i++)
scanf("%lf",&p[i]);
f[0]=0;
f[1]=p[0];   //一只麻球1天后全死完的概率就是生了0只麻球,这个概率也就是p[0]
for(int i=2;i<=m;i++)
{
f[i]=0;
for(int j=0;j<n;j++)
f[i]+=p[j]*pow(f[i-1],j);
}
printf("Case #%d: %.7lf\n",++kase,pow(f[m],k));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: