题意:求n!的位数~
由于n!最后得到的数是十进制,故对于一个十进制数,求其位数可以对该数取其10的对数,最后再加1~
易知:n!=n*(n-1)*(n-2)*......*3*2*1
∴lg(n!)=lg(n)+lg(n-1)+lg(n-2)+......+lg(3)+lg(2)+lg(1);
代码:
1 #include2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int t; 9 scanf("%d",&t);10 while(t--)11 {12 double i,n,sum;13 scanf("%lf",&n);14 for(i=1,sum=0;i<=n;i+=1)15 sum+=log10(i);16 printf("%d\n",(int)sum+1);17 }18 return 0;19 }
//memory:248KB time:406ms