思路
分析一下,我们会发现这样的情况,相同位数的数的以 10 为底的对数是相同的,例如 log10(123) 和 log10(100) , 所以我们要求一个数有多少位,就相当于求 log10(n)+1 。
代码
#include <cstdio>
#include <cmath>
using namespace std;
int sol(int n)
{
double ans = 0;
for(int i=1; i<=n; i++)
{
ans += log10(i);
}
return int(ans) + 1;
}
int main()
{
int n, num;
scanf("%d", &n);
while(n--)
{
scanf("%d", &num);
printf("%d\n", sol(num));
}
return 0;
}