题意:N!的位数
思路:log10的使用,log10(1*2*3*4........*n) = log10(1) + log10(2)+.............
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n = 0;
double sum = 0;
scanf("%d",&n);
for(int i = 1;i <= n; i++)
{
sum = sum + log10(i);
}
printf("%.0lf\n",sum+0.5);
}
return 0;
}
本文介绍了一种通过计算对数来确定N!位数的方法。利用log10的累加特性,可以有效地求解N!的位数,避免了直接计算阶乘所带来的数值溢出问题。
409

被折叠的 条评论
为什么被折叠?



