加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

poj pku 2661 log的用法

(2010-05-21 11:20:38)
标签:

poj

pku

2661

it

分类: 杂题

题目描述:简化后就是:给你一个k值,求一个最大的n,使2^k > n!

解题报告:由于k很大,所以两边同时取log,就是k * log(2) - log(1) - log(2) .... -log(n) > 0。

代码如下:

#include<iostream>
#include<cmath>
using namespace std;
int y, re[3000];
int main()
{
    for(int i = 1960; i <= 2160; i++)
    {
        double left = log(2.0) * pow(2.0, (i - 1960) / 10 + 2.0);
        for(int j = 1; 1; j++)
        {
            left -= log(j * 1.0);
            if (left < 0)
            {
                re[i] = j - 1;
                break;
            }
        }
    }
    while(scanf("%d", &y) && y)
        printf("%d\n", re[y]);
    return 0;
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有