![](https://images2015.cnblogs.com/blog/829161/201606/829161-20160614151510323-1242460320.png)
阶乘是乘法 , 乘法的话 , 几位数*几位数的位数 就是 哪两个几位数相加 . 这个可以用log10来解决 , 所以有如下代码 .
1 #include<stdio.h>
2 #include<string.h>
3 #include<math.h>
4 #include<iostream>
5 #include<algorithm>
6 #include<queue>
7 #include<vector>
8 #include<set>
9 #include<stack>
10 #include<string>
11 #include<sstream>
12 #include<map>
13 #include<cctype>
14 #include<limits.h>
15 using namespace std;
16 int main()
17 {
18 double maxn=0;
19 int n,t;
20 scanf("%d",&t);
21 while(t--)
22 {
23 maxn=0;
24 scanf("%d",&n);
25 for(int i=1;i<=n;i++)
26 maxn+=log10(i);
27 printf("%d
",(int)maxn+1);
28 }
29 }