1058**(1<=n<=10^6):**
n!的长度等于log10(n!)
int main()
{
int n,i;
double sum=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum=sum+log10(i);
printf("%d\n",(int)sum);
return0;
}
1130(1<=n<=10^9)
通过斯特林公式优化:
(e =2.718)
斯特林公式可以用来估算某数的大小,结合lg可以估算某数的位数,或者可以估算某数的阶乘是另一个数的倍数。
#define PI 3.1415926535898
//这里要长一点
#define e 2.718281828459
int main()
{
int i,t,j,n;
double sum;
scanf("%d",&t);
for(j=0;j<t;j++)
{
scanf("%d",&n);
sum=0.5*log10(2*PI*n)+n*log10(n/e);
printf("%lld\n",(long long)sum+1);
}
return 0;
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!