题目:
http://acm.hdu.edu.cn/showproblem.php?pid=1018
求n阶乘的结果的位数。
题解:
直接求n阶乘会爆掉,我们可以利用 log10(n!)=log10(1)+log10(2)+···+log(n)
结果为 log10(n!)+1
代码:
#include<cstdio>
#include<cmath>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
double i;
double sum=0;
for(i=1;i<=n;i++)
{
sum+=log10(i*1.0);
}
printf("%d\n",(int)sum+1);
}
return 0;
}