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 }