如图,题目出处51nod,http://www.51nod.com/Challenge/Problem.html#problemId=1058
自然数n的位数为1+lg n舍去小数所得结果(以1234为例,lg 1234=3,1+3=4,4即是位数,其它类比),所以n!的位数为1+lg n!
对于lg n!有:
lgn!
=lg(1*2*3*……*n)
=lg1+lg2+lg3+……+lgn
注意:lg1,lg2,lg3……,lgn需要保留小数,而这些小数加和所得结果,要舍去小数
C++代码如下,AC耗时31ms:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double n,i,res=0;
int ans;
cin >> n;
for(i=1;i<=n;i++) {
res += log10(i);
}
ans = res+1;
cout << ans;
return 0;
}