?? poisson.c
字號:
/*【問題描述】
泊松分布是一種常用的離散型概率分布,數(shù)學(xué)期望為m的泊松分布的分布函數(shù)定義如下:
P(m, k) = mk * e-m/k! (k = 0, 1, 2, 3, …)
對于給定的m和k (0<m<2000, 0<= k < 2500),計算其概率,以科學(xué)格式輸出,保留小數(shù)點后6位有效數(shù)字。
【輸入形式】
輸入文件為當(dāng)前目錄下的poisson.in。
文件中包含兩個數(shù)字,分別為m,k的值。
【輸出形式】
輸出文件為當(dāng)前目錄下的poisson.out。
文件中輸出泊松分布的值,值以科學(xué)格式輸出,保留小數(shù)點后6位有效數(shù)字。
【輸入樣例】
1 0
【輸出樣例】
3.678794e-01
【運行時限】
1秒
【評分標準】
可以使用數(shù)學(xué)庫函數(shù),誤差不超過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)
{//調(diào)整成科學(xué)計數(shù)法
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);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -