HDOJ 1018 Big Number

此题需要一些小小的数学知识。lg(N!)=lg(1)+lg(2)+…+lg(N)。而一个数的位长也刚好是其lg值+1。所以有以下代码:

#include<stdio.h>
#include<math.h>
int main()
{
    int caseNum,end;
    double result;
    scanf("%d",&caseNum);
    while(caseNum--)
    {
        scanf("%d",&end);
        result=1;
        for(int i=2;i<=end;i++)
            result+=log10(i*1.0);
        printf("%d\n",(int)result);
    }
    return 0;
}

同时此题还可以使用斯特林公式进行计算。公式为:4dee98dd30a824c88d1029dc ,然后取lg值输出即可。

posted on 2011-10-09 17:09  AdaByron  阅读(278)  评论(0编辑  收藏  举报

导航