zoj3696Alien's Organ (二项分布,泊松分布求近似值)
1 /*二项分布即重复n次的伯努利试验,每次发生的概率一样,假设成功的概率是p,那么失败的概率就是1-p; 2 二项分布的概率公式:试验中发生K次的概率是 3 P(ξ=K)= C(n,k) * p^k * (1-p)^(n-k), 其中C(n, k) = n!/(k! * (n-k)!) 4 因为这里的数据,k最大为100,100的阶乘超过了int64位,所以不能用这个公式,这时候可以用泊松分布的概率 5 公式求近似值。 6 好了接着解释题意:这道题输入n和m,求m是期望,求实验中发生不超过n次的概率,所有所有的概率为0,1,2,3,4...n的概率和 7 */ 8 #include<stdio.h> 9 #include<string.h> 10 #include<math.h> 11 #define e exp(1.0) 12 int main() 13 { 14 int i,j,n,m,k; 15 int t; 16 double ok; 17 scanf("%d",&t); 18 while(t--) 19 { 20 scanf("%d%lf",&n,&ok); 21 double num=1.0/( pow(e,ok) ); 22 double sum=0; 23 for(i=0;i<=n;i++) 24 { 25 double f=pow(ok,i)*num; 26 for(j=1;j<=i;j++) 27 f=f/j; 28 sum=sum+f; 29 } 30 printf("%.3lf\n",sum); 31 } 32 return 0; 33 } 34 lyh走之前还送了一次助攻