斯特灵公式
定义:一条用来取n阶乘近似值的数学公式
公式为n!=sqrt(2*Pi*n)*(n/e)^n
用途:用来估算某数的大小,结合lg估算某数的位数,估算某数的阶乘是另一个数的倍数
题目:hdu1018
给一个数n,求N!位数
In out
2 7
10 19
20
#include<bits/stdc++.h>
using namespace std;
const double pi=acos(-1);
const double e=2.718281929459;
int main(){
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
cout<<(int)(log10(2.0*pi*n)/2.0+n*log10(n/e)+1)<<endl;
}
return 0;
}
易知整数n的位数为[lgn]+1,利用公式计算n!结果的位数时可以两边取对数得:
Log10(n!)=1/2*log10(2*n*Pi)+n*log10(n/e)
答案为:
Ans=1/2*log10(2*n*Pi)+n*log10(n/e)+1