斯特林公式-求解n!的位数
题目链接
上述为斯特林阶乘快速求解的近似公式,这个误差值随着n的增大而减小
求位数就是log10(x)即可,但是注意到,log10(x)求出的整数部分+1才是x的位数
#include<iostream>
#include<cmath>
using namespace std;
#define pi 3.141592653589793
#define e 2.718281828459
int main(){
double n;
int t;
cin>>t;
while(t--){
cin>>n;
double value = (0.5*log10(2*pi*n)+n*log10(n/e));
cout<< (long long)value+1<<endl;
}
}
具体公式推导参考百度百科