首页 > 代码库 > 【51NOD-0】1058 N的阶乘的长度

【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

 

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