求n!的位数,令k=log10(p);
若k是整数,则k+1就是p的位数,否则,对k取整加1,
n!肯定不是10的整数次幂,由对数函数的性质可得
log10(n!)=log10(1)+log10(2)+......+log10(n);
然后对log10(n!)取整加1就是n!的位数.
#include<math.h> #include<stdio.h> int main() { int n,t,i; double s; scanf("%d",&t); while(t--) { scanf("%d",&n); s=0; for(i=1;i<=n;i++) { s+=log10((double)i); } int S=(int)s+1; printf("%d\n",S); } return 0; }