#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int digit(int n)
{
double d = 0;
for(int i =1;i<=n;++i)
{
d += log10((double)i);
}
return (int)(d+1);
}
int main()
{
int m,n,result;
while(scanf("%d",&m) != EOF)
{
while(m>0)
{
scanf("%d",&n);
result = digit(n);
printf("%d\n",result);
--m;
}
}
return 0;
}
用到数学知识,计算数的位数,数字为n,(int)log10(n)+1。
阶乘位数为log10(1*2*3*4...*n) = log10(1)+log10(2)+log10(3)+...+log10(n)。