HPU--1166 阶乘问题(一)

题目描述

小H对阶乘!很感兴趣。现在他想知道$N!$的位数,由于$N$太大了,所以请了你这个BestCoder来帮忙。

输入

第一行输入一个整数$T$,代表有$T$组测试数据。

每组数据输入一个整数$N$。

注:$1 <= T <= 10, 1 <= N <= 2 * 10^6$。

输出

对每组数据,输出$N!$的位数。

样例输入

2
100
1000

样例输出

158
2568
题解:N!==N*(N-1)*(N-2)*(N-3)*...*1;阶乘的位数就是对n个数分别取对数,然后求和,取整后加一
代码:
 1 #include<cstdio>
 2 #include<cmath>
 3 int main()
 4 {
 5     int t,n;
 6     scanf("%d",&t);
 7     while(t--)
 8     {
 9         scanf("%d",&n);
10         double sum=0;
11         for(int i=1;i<=n;i++)
12         {
13             sum+=log10(i);
14         }
15         printf("%d\n",(int)sum+1);
16     }
17     return 0;
18 }

 

 
posted @ 2017-08-15 20:23  ⊙∽⊙Perseverance  阅读(113)  评论(0编辑  收藏  举报