Chinaunix首页 | 论坛 | 博客
  • 博客访问: 71881
  • 博文数量: 41
  • 博客积分: 1475
  • 博客等级: 上尉
  • 技术积分: 440
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 22:49
文章分类
文章存档

2012年(8)

2011年(1)

2009年(32)

我的朋友
最近访客

分类:

2009-04-16 20:32:55

/*
 *******************************************************************************
 *
 * Filename: 701.c
 *
 * Version: 0.1
 *
 * Author: Ye Xiaofeng , yexfeng # gmail.com
 *
 *******************************************************************************
 */


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int length(unsigned in)
{
    int len = 0;
    
    if (in < 10) {
        return 1;
    } else {
        while (in > 0) {
            in /= 10;
            len++;
        }
    }

    return len;
}

void process(unsigned int in)
{
    int k;
    int e;
    double left, right;
    double log_2;
    double log_10;
    double d1;
    double d2;
    double d3;
    double d4;

    log_2 = log(2);
    log_10 = log(10);
    d1 = log(in) / log_2;
    d2 = log_10 / log_2;
    d3 = log(in+1) / log_2;
    d4 = log_10 / log_2;

    k = length(in) + 1;
    left = d1 + k * d2;
    right = d3 + k * d4;
    e = (int)ceil(left);
    while (e >= right) {
        k++;
        left = d1 + k * d2;
        right = d3 + k * d4;
        e = (int)ceil(left);
    }
    printf("%d\n", e);
}

int main(int argc, char *argv)
{
    unsigned int in;

    while (scanf("%u", &in) != EOF) {
        process(in);
    }

    return 0;
}

阅读(347) | 评论(0) | 转发(0) |
0

上一篇:ACM UVA (400)

下一篇:ACM UVA (10004)

给主人留下些什么吧!~~