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; }