题意是求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; }