杭电OJ 1018 大数

题目描述:

题目是求n!的位数,当n'普通的ke'x科学计计算,可以处理不超过10的100次幂的计算器可以计算至69!。

当n特别大时斯特林公式估计:

斯特林公式:n很大时,估计值:   

                       更精确的估计值:    其中:    

可用出计算出近似值,然后以10为底取对数再加1就是位数。

AC通过的代码:

//万能头 
#include<bits/stdc++.h>
using namespace std; 
#define LL long long 
const double PI = atan(1.)*4.;

int main()
{

	int T;
	cin>>T;
	while(T--){
		int a;
		cin>>a;
		cout<<(int)(log10(2*PI*a)/2+a*(log10(a)-1/log(10)))+1<<endl;
	}
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41971768/article/details/89460183