输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
Input
输入N(1 <= N <= 10^6)
Output
输出N的阶乘的长度
Sample Input
6Sample Output
3
- 解题思路:n! 的位数即为:log10(n!) + 1
- 由于只是求位数,所以没有必要求 n! 的精确值。
- 斯特林公式:
- AC Code
#define _USE_MATH_DEFINES
#include<cstdio>
#include<cmath>
//斯特林公式 n! 约等于 sqrt(2*PI*n)*(n/e)^n
int main() //判断n的长度,就是log10(n!)+1.
{
int n;
scanf("%d",&n);
int len = 0.5*log10(2*n*M_PI)+n*log10(n/M_E)+1;
printf("%d",len);
return 0;
}