【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

 

posted @ 2017-05-29 22:20  ONION_CYC  阅读(273)  评论(0编辑  收藏  举报