HDU1018 Big Number

题目大意是求n的阶乘有对少位

我们知道,求一个数n的位数,可以取对数求出,即:位数m=(int)log10(n)+1;

对于n的阶乘,一个for循环就搞定了


#include <cstdio>

#include <math.h>
using namespace std;
int main()
{
    int t,n,i,ans;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        double temp=1;
        for(i=n;i>=1;i--)
          temp+=log10((double)i);
        ans=(int)temp;
        printf("%d\n",ans);
    }
    return 0;
}


你可能感兴趣的:(HDU1018 Big Number)