这一题是求一个数阶乘的位数,可以用斯特灵公式:
代码:#include<stdio.h> #include<cmath> using namespace std; const double PI=acos(-1.0); const double e=exp(1.0); int main() { int n,cnt; int T; scanf("%d",&T); while(T--) { scanf("%d",&n); cnt=(int)(0.5*log10(2*PI*n)+n*log10(n/e))+1; printf("%d\n",cnt); } return 0; }代码二:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{ int T;
cin>>T;
while(T--)
{ int n;
cin>>n;
if(n==1) {cout<<"1"<<endl;continue;}
double sum=1;
for(int i=2;i<=n;++i)
sum+=log10((double)i);
cout<<(int)sum<<endl;
}return 0;
}