题目链接
题意:求数的阶乘的位数,数比较大,直接暴力会超精度。
法一:
题意分析:我们可以通过求位数的公式log10(i) + 1来求一个数的位数即log10(N!) = log(N) + log(N - 1) + ... + log (N). 注意不能在中途对其进行int取整。
#include<iostream>
#include<cstdio>
#include<math.h>
#include<algorithm>
using namespace std;
const int maxn = 2000000;
int main()
{
int t, h;
scanf("%d", &t);
while(t--)
{
scanf("%d", &h);
double sum = 0;
for(int i = 1; i <= h; i++)
{
sum = sum + log10(i);
}
sum += 1;
printf("%d\n", (int)sum);
}
return 0;
}