您的位置:首页 > 其它

HDOJ 1018 Big Number

2011-10-09 17:09 288 查看
此题需要一些小小的数学知识。lg(N!)=lg(1)+lg(2)+…+lg(N)。而一个数的位长也刚好是其lg值+1。所以有以下代码:

#include<stdio.h>
#include<math.h>
int main()
{
int caseNum,end;
double result;
scanf("%d",&caseNum);
while(caseNum--)
{
scanf("%d",&end);
result=1;
for(int i=2;i<=end;i++)
result+=log10(i*1.0);
printf("%d\n",(int)result);
}
return 0;
}

同时此题还可以使用斯特林公式进行计算。公式为:

,然后取lg值输出即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: