学习了斯特林公式,对n的阶乘有简化的运算,之后用log10取位数
#include <iostream>
#include <cmath>
using namespace std;
const long double a=0.79817986835811504;//lg(2*pi)
const long double b=0.434294481903;//lg(e)
//斯特林公式 lg(n!)=(lg(2*pi)+lg(n))/2 + n*(lg(n)-lg(e))
int main()
{
int t;
cin>>t;
while(t--)
{
int n,p;
cin>>n;
long double c=log10((double)n);
if(n>3)p=(a+c)/2+n*(c-b)+1;
else p=1;
cout<<p<<endl;
}
return 0;
}