HDU 1018 阶乘数的位数

题目大意:

将一个数开阶乘后得到的值,来求这个值的位数

n! = 1*2*3*4...*n

对于求一个数的位数的方法为ans = lg(n!) + 1

那么就可以看作 ans = lg(1) + lg(2) .......+ lg(n) + 1

#include <cstdio>
#include <cmath>

const double eps = 1e-9;

int main()
{
    int t;
    scanf("%d" , &t);
    while(t--){
        int n;
        scanf("%d" , &n);
        double ans = 1;
        for(int i = 1 ; i<=n ; i++)
            ans += log10(i * 1.0);
        int p = (int) ans;
        int ret = 0;
        if((p+1 - ans) <= eps) ret = p+1;
        else ret = p;
        printf("%d
" , ret);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/CSU3901130321/p/4191688.html