hdu 1018 求大数阶乘位数有公式

位数的计算方法是(int)log10(x)+1 
这个是计算x的位数的
log10(n!)=log10(1)+log10(2)+log10(3)+...+log10(n)
#include<stdio.h>
#include<math.h>
int main()
{
int n,t;
double sum;
scanf("%d",&t);
while(t--)
{
sum=0;
scanf("%d",&n);
if(n==0)
{
printf("1\n");
continue;
}
while(n)
{
sum+=log10(n);
n--;
}
printf("%d\n",(int)(sum)+1);
}
return 0;
}

 

你可能感兴趣的:(HDU)