现由斯特林[striling]公式可得: lnN!=NlnN-N+0.5ln(2N*pi) 而10的7次方阶乘的位数等于: log10(N!)取整后加1 log10(N!)=lnN!/ln(10) #include<iostream> #include<cmath> using namespace std; const double PI=3.14159265; int main() { int n,len,N; scanf("%d",&n); while(n--) { scanf("%d",&N); len=ceil((N*log(N)-N+log(2*N*PI)/2)/log(10)); //ceil求上界,即不小于某值的最小整数 //log在c语言里面是自然对数 printf("%d/n",len); } return 0; }