题目大意:

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

 

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\n" , ret);
    }
    return 0;
}

 

 posted on 2014-12-29 15:01  Love风吟  阅读(167)  评论(0编辑  收藏  举报