hdu1018(大水题)

题意:给你一个 n ,计算 n! 有多少位数
分析:
123456=1.23456*10^5;
log10(123456)=5.09151;
log10(1.23456*10^5)=log10(1.23456)+log10(10^5)=0.09151+5;
故int(log10(n))+1 就是n的位数

#include<cstdio>
#include<cmath>
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        scanf("%d",&n);
        double sum=0;//这里必须是浮点类型
        for(int i=2;i<=n;i++)
            sum+=log10(i*1.0);
        int ans=int(sum)+1;
        printf("%d\n",ans);
    }
    return 0;
}

后天省赛加油

你可能感兴趣的:(水题)