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;
}
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;
}
相关文章推荐
- POJ 1423 Big Number 解题报告
- poj1423解题报告
- ACM pku 1007 解题报告(给像我一样的新手们的忠告)
- POJ 1423 解题报告
- 水题poj1423 解题报告
- ACM pku 1067 解题报告(威佐夫博奕(Wythoff Game))
- acm pku 1032 Parliament 解题报告
- ACM pku 1005 解题报告
- ACM pku 1004 解题报告
- Pku acm 1423 Big Number 解题报告----求n!的位数
- acm pku 2418解题报告
- acm pku 2479解题报告
- acm pku 1321解题报告 棋盘问题
- Sum - ACM PKU 1844 解题报告
- pku 1423 阶乘 Big Number 解题报告
- ACM pku 1658 解题报告(另一种输入输出方式)
- ACM pku 1140 解题报告(Expanding Fractions )
- acm pku 1128解题报告
- google code jam 2009 解题报告
- POJ 2420 模拟退火 解题报告