hdoj 1141 Factstone Benchmark(数学题。。)

来源:互联网 发布:淘宝模特红人有哪些 编辑:程序博客网 时间:2024/05/22 14:32

思路:题目意思是求n!<2^bit时n最大可以取多少;对两边取对数,得到log(1)+log(2)......+log(n)<bit*log(2)

代码如下:

#include <iostream>  #include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>#include <vector>using namespace std;int main(){int a[30];int i;int y=1960;int n;long bit;double sum;    for(i=0;i<30;i++)    {    a[i]=y;    y+=10;}while(scanf("%d",&n)!=EOF){if(n==0)break;sum=0.0;for(i=0;i<30;i++){if(n>=a[i]&&n<a[i+1]){bit=pow(2,i+2);}}for(i=1;;i++){sum+=log(i)/log(2);if(sum>=(double)bit)break;}printf("%d\n",i-1);}                     return 0;        }