这一题是求一个数阶乘的位数,可以用斯特灵公式:
代码:#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; }