51Nod_1058 N的阶乘的长度
http://www.51nod.com/Challenge/Problem.html#!#problemId=1058
题目
输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
输入
输入N(1 <= N <= 10^6)
输出
输出N的阶乘的长度
样例输入
6
样例输出
3
分析
n!对10取对数,这个数向下取整加一就是位数,对数运算有 lg(m*n)=lg(m)+lg(n),因此计算lg(n!)可以按照如下程序进行计算
C语言程序
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
scanf("%d",&n);
double sum=0;
for(i=n;i>=1;i--)
sum+=log10(i*1.0);
printf("%d\n",(int)sum+1);
return 0;
}