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


4645

被折叠的 条评论
为什么被折叠?



