hdu1141(数学log)

来源:互联网 发布:淘宝白菜价优惠券秒杀 编辑:程序博客网 时间:2024/05/22 17:10

题意:找到 n ! < 2 ^ m 最大的n是多少?

思路: 2^m = n!

两边同时log   log2^m = log n !

log n! = log1+log2+......logn

log2^m = m*log2

m*log2 = log1+log2.....一直加到大于m*log2就不加了,那个n就是最大的n阶乘

#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int main(){    int n;    while(scanf("%d",&n) != EOF)    {        if(n == 0)            break;        n = (n - 1960)/10+2;        double bit = (1 << n )*log(2.0);        double count = 0;int i = 0;        while(count < bit)        {            count +=  log(++i) ;//特别注意 i = 1 ,log(i++)不知道为什么错了 只能i = 0,log(++i)         }        printf("%d\n",i-1);    }    return 0;}

 

原创粉丝点击