HDOJ 1018 Big Number

来源:互联网 发布:积分兑换软件 编辑:程序博客网 时间:2024/06/04 17:50
 

此题需要一些小小的数学知识。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值输出即可。