斯特林发求阶乘位数。(很好很强大)

 1 #include <stdio.h>
2 #include <math.h>
3 #define e 2.718281828459
4 #define pi 3.1415926535898
5 int main()
6 {
7 int n;
8 scanf("%d", &n);
9 while(n--)
10 {
11 long long i, j;
12 scanf("%lld", &i);
13 j = (long long)(double)(log10(sqrt(2*pi*i)) + i*log10(i/e))+ 1; /* 斯特林公式 */
14 printf("%lld\n", j);
15 }
16 return 0;
17 }

n!≈sqrt(2*n*pi)*pow(n,n)*pow(e,-n)

posted @ 2012-02-20 13:48  windynightst  阅读(221)  评论(0编辑  收藏  举报