1 /**
2 大意: 求m!用2进制表示有多少位 m! = 2^n 两边同时取对数 log2(m!) = n
3 即 log2(1) + log2(2)+log2(3)+log2(4)...+log2(m) = n
4 枚举即可
5
6 拓展:
7 可以用斯特林(Stirling)公式求解
8
9
10 斯特林(Stirling)公式:
11
12 log(x) =====ln(x)
13
14 **/
15 #include <iostream>
16 #include <cmath>
17 using namespace std;
18
19 int main()
20 {
21 int y;
22 while(cin>>y&&y){
23 int t = 1<<((y-1960)/10+2);
24 double m=1;
25 double res =log(m)/log(2.0);
26 while(res<=t){
27 m++;
28 res += log(m)/log(2.0) ;
29 }
30 cout<<m-1<<endl;
31 }
32 return 0;
33 }