ZOJ 3696 Alien's Organ

题意:一个外星人每时每刻都能制造出随机数量的器官。已知平均每天能制造出λ数量器官,求一天内制造器官不超过n的概率。


思路:由于他每时每刻都在随机制造一定数量的器官。所以我们考虑一个瞬间,要么制造出一个器官,要么是0。这显然是一个二项分布。但是要满足上述说法,必须把时间划分精确到一个瞬间,也就是二项分布的n必须无穷大。这时候就要用到Poisson分布当二项分布的n很大而p(λ=np,λ为均值)很小时,泊松分布可作为二项分布的近似显然这题的n相对p来说很大,p很小。值得注意的是你并不能直接用Poisson分布的公式算出每一项P(x),因为那样你不得不面临计算高次幂而产生的精度问题。所以用递推式即可。

p(0)=e^(-λ)

p(x)=p(x-1)*λ/x (x>=1)


代码:

#include<stdio.h>
#include<math.h>
#define N 110

double f[N];
const double e=2.718281828;
int main()
{
	int re,n;
	double p;
	scanf("%d",&re);
	while(re--){
		scanf("%d%lf",&n,&p);
		double ans=0;
		ans+=(f[0]=pow(e,-p));
		for(int i=1;i<=n;i++)
			ans+=(f[i]=f[i-1]*p/i);
		printf("%.3f\n",ans);
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值