您的位置:首页 > 其它

acm pku 1423解题报告

2008-11-30 13:21 169 查看
这个题目需要用到斯特灵公式。其公式如下:

lnN!=NlnN-N+0.5ln(2N*pi)

还有,一个数M的位数是等于log10(M)取整后加1的

有了这些数学理论就好办了。

因为lnN! /ln10 = log10(N!)

那么len = ceil((N*log(N)-N+log(2*N*PI)/2)/log(10))

到此,整个题目就解决了。关键是这个公式。

源代码如下:#include<stdio.h>
#include<math.h>
#define PI 3.1415926
int main()
{
long num;
int len;
int count;
scanf("%d",&count);
while(count>0){
scanf("%ld",&num);
if(num==1)
printf("%ld/n",num);
else{
len = ceil((num*log(num)-num+log(2*num*PI)/2)/log(10));
printf("%d/n",len);
}
count--;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: