Description:编程计算N!是十进制几位数?
Sample Input:1000000
Sample Output:5565709
分析:利用Stirling公式。
![](https://i-blog.csdnimg.cn/blog_migrate/159f3d70a3ee9c755c2c4440ad797c3a.jpeg)
My Code:
1
#include
<
stdio.h
>
2 #include < math.h >
3 #define LGPI 0.3990899341 // 0.5*lg2*pi
4 #define LGT 0.4342944819 // lge
5 int main()
6 {
7 long int n; double r;
8 while (scanf( " %ld " , & n) != EOF)
9 {
10 r = LGPI + log10(n) * (n + . 5 ) - n * LGT;
11 printf( " %ld\n " ,( long )r + 1 );
12 }
13 return 0 ;
14 }
2 #include < math.h >
3 #define LGPI 0.3990899341 // 0.5*lg2*pi
4 #define LGT 0.4342944819 // lge
5 int main()
6 {
7 long int n; double r;
8 while (scanf( " %ld " , & n) != EOF)
9 {
10 r = LGPI + log10(n) * (n + . 5 ) - n * LGT;
11 printf( " %ld\n " ,( long )r + 1 );
12 }
13 return 0 ;
14 }