📄 poisson.c
字号:
/*【问题描述】
泊松分布是一种常用的离散型概率分布,数学期望为m的泊松分布的分布函数定义如下:
P(m, k) = mk * e-m/k! (k = 0, 1, 2, 3, …)
对于给定的m和k (0<m<2000, 0<= k < 2500),计算其概率,以科学格式输出,保留小数点后6位有效数字。
【输入形式】
输入文件为当前目录下的poisson.in。
文件中包含两个数字,分别为m,k的值。
【输出形式】
输出文件为当前目录下的poisson.out。
文件中输出泊松分布的值,值以科学格式输出,保留小数点后6位有效数字。
【输入样例】
1 0
【输出样例】
3.678794e-01
【运行时限】
1秒
【评分标准】
可以使用数学库函数,误差不超过0.000001。
*/
#include<stdio.h>
#include<math.h>
double poisson(int m, int k);
double poisson(int m, int k)//老师上课讲解的方法
{
double p;
int i;
p = k * log(m) - m;
for (i = 2; i <= k; i++){
p -= log(i);
}
return exp(p);
}
void main()
{
int a,b,k=0;
double answer;
FILE *p,*q;
p=freopen("poisson.in","r",stdin);
q=freopen("poisson.out","w",stdout);
fscanf(p,"%d %d",&a,&b);
answer=poisson(a,b);
if (answer>=10.0)
{//调整成科学计数法
while(answer>=10.0)
{
answer/=10.0;
k++;
}
fprintf(q,"%.6fe%02d",answer,k);
}
else if (answer<1.0){
while(answer<1.0)
{
answer*=10.0;
k++;
}
fprintf(q,"%.6fe-%02d",answer,k);
}
else
fprintf(q,"%.6f",answer);
fclose(p);
fclose(q);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -