题意是求N!的位数,纯数学,一开始我也不知道,在网上查到的公式。
代码:
/*
Author:snowflake
Time:2012/4/26 14:46
Desc:hdu 1018 数学题
*/
/*
求N!的位数,可以看成是10的多少次方
有公式: N次方阶乘的位数等于: log10(N!) = log10(1) + log10(2)+...+log10(N)取整后加1
*/
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
{
double s = 0;
int num;
cin >> num;
for(int j = 1; j <= num; j++)
s += log10(double(j));
cout << (int)s + 1 <<endl;
}
return 0;
}