hdu1018

可以用斯特林公式直接求出n!的结果。

  

当n较小时公式已经很准确了,所以可以使用。但是,对于这种极限值为1的公式,只能用来估计位数,不能作为严格的等于的公式.类似的有素数分布定理  x/ln(x)~f(x),注:f(x)表示1 ,2, 3,...,x中素数的个数.

# include <cstdio>
# include <cmath>
#include<iostream>
using namespace std;
int main()
{
    int T, n;
    
    cin>>T;
    while (T--)
    {
        cin>>n;        cout<<(int)(n*log10(n/exp(1.0))+0.5*log10(2.0*n*4.0*atan(1.0)))+1<<endl;// 阶乘的位数     (阶乘太大,取对数处理。)
    }
    return 0;
}

 

posted @ 2016-07-31 12:07  TechIsOnlyTool  阅读(179)  评论(0编辑  收藏  举报