这一题是求一个数阶乘的位数,可以用斯特灵公式:
代码:#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;
}
本文介绍了一种使用斯特灵公式求解数阶乘位数的方法,并提供了两个实现版本,包括直接应用斯特灵公式和通过累加对数的方式计算。此算法适用于快速估算大数阶乘的位数。
972

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



