UVa 1185 - Big Number (数学)
题意
求一个阶乘有几位数。
思路
每个数可以表示成$num = a*10^n$
取对数
$log(num) = log(a * 10^n) = log(a) + n$
$log(a)$部分显然小于1,所以只需把所有的数log加一遍最后加一就是答案。
代码
int main()
{
int T;
scanf("%d", &T);
while (T--)
{
int n;
scanf("%d", &n);
double sum = 0;
for (int i = 1; i <= n; i++) sum += log10(i);
printf("%d\n", (int)(sum + 1));
}
return 0;
}