【51NOD-0】1058 N的阶乘的长度

【算法】数学

【题解】n!的位数相当于ans=log10(n!)上取整,然后就可以拆出来加了。

可以用log10(i)或log(i)/log(10)

阶乘好像有个斯特林公式……

#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    long double ans=0;
    for(int i=1;i<=n;i++)ans+=log10(i);
    printf("%d",((int)ans)+1);
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/onioncyc/p/6919202.html