sicily 1119 Factstone Benchmark

题意:求满足n! < 2^k,n的最大值!

解题:指数比较转换成对数比较,达到降幂!

        其中:  log (n!) = log(n)+log(n-1)+...+log(1);

        log(2^k) = k * log(2);

    当然也可以使用斯特林(stirling 公式求解)

        公式如下:

        

 1 程序代码:
 2 
 3 ============================================
 4 
 5 #include<iostream>
 6 #include<cmath>
 7 using namespace std;
 8 int main(){
 9    int year;
10    double res;
11    while(cin >> year && year >0){
12       //add 2 because of the beginning with 4, 1<<2 equals with 4 
13       int bits = 1<<((year -1960)/10+2);
14       double i=1;
15       res =0;
16       while(res<bits){
17          res += log(i)/log(double(2));
18          i++;
19       }
20       cout<<i-2<<endl;
21    }
22    return 0;
23 }
24 
25 ============================================

 

 

 

posted @ 2014-01-08 15:46  shaoshuai1990  阅读(235)  评论(0)    收藏  举报