题意:求n!是多少位数(1 <= n <= 10^7)。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1018
——>>对于一个数,如1314,log10(1314) = 3.xxx,它是一个4位数。
对于n!,log10(n!) = log10(n) + log10(n-1) + ... + log10(1);
注意用浮点数。
#include <cstdio>
#include <cmath>
using namespace std;
int n, ret;
void slove(){
double sum = 1;
for(int i = 1; i <= n; i++) sum += log10(i);
ret = (int)sum;
}
int main()
{
int T;
scanf("%d", &T);
while(T--){
scanf("%d", &n);
slove();
printf("%d\n", ret);
}
return 0;
}