您的位置:首页 > 其它

Uva 11021 Tribles

2014-09-03 17:19 211 查看
f[i]表示1只麻球及他的子孙在i天后全部死亡的概率。

那么可以得到递推式: f[i]  = P0+P1*f[i-1]+P2*f[i-1]^2+……  也就是说生出j只的概率并且这j只及其子孙在i-1天后死亡的概率的乘积。

因为每只麻球的死亡时相互独立的,所以算出一只麻球的f[m]后k只麻球的死亡概率就是 f[m]^k。

#include <iostream>
#include<stdio.h>
#include<cstring>
#include<cmath>
using namespace std;

double f[1100],p[1100];
int main()
{
int t;
int n,k,m;
scanf("%d",&t);
int cas = 1;
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];
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);
}
double ans = pow(f[m],k);
printf("Case #%d: %.7lf\n",cas++,ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: