HDU 1018 Big Number

题目大意:求一个数的阶乘的位数。

单词积累:factorial 阶乘

题解:我们知道log10(n!)+1就是n的阶乘的位数,转化一下,log10(n!)+1=log10(1)+log10(2)+log10(3)+……+1;

#include <cstdio>
#include <cmath>
int main(){
    int n;
    scanf("%d",&n);
    while(n--){
        int m;
        double len=0;
        scanf("%d",&m);
        for(int i=1; i<m+1; i++)
        len+=(log10(i+0.0));
        printf("%d\n",int(len)+1);
    }
    return 0;
}

总结:double(log(i)/log(10))-->log10(i+0.0)

 

 

posted @ 2014-01-18 09:40  forever97  阅读(170)  评论(0编辑  收藏  举报