题意:求N!的位数。 思路:1,Stirling公式 2,一个数X的位数是由log10(X)取整后加1得到。 #include<iostream> #include<cmath> using namespace std; #define pi 3.1415926535897932 #define e 2.7182818284590452354 #define e1 exp(1.0) int main() { int test; cin>>test; int n; while(test--) { cin>>n; int ans=(int )(log10(sqrt(2*pi*(double )n))+n*(log10(1.0*n)-log10(e1)))+1; cout<<ans<<endl; } return 0; }