Coding Change World

代码改变世界
PKU 1003解题

首先庆祝一下,今天连A了3题。感觉后面这题太简单了。。

由于英文不好 ,找了个翻译:

  若将一叠卡片放在一张桌子的边缘,你能放多远?如果你有一张卡片,你最远能达到卡片长度的一半。(我们假定卡片都正放在桌子上。)如果你有两张卡片,你能使最上的一张卡片覆盖下面那张的1/2,底下的那张可以伸出桌面1/3的长度,即最远能达到 1/2 + 1/3 = 5/6 的卡片长度。一般地,如果你有n张卡片,你可以伸出 1/2 + 1/3 + 1/4 + ... + 1/(n + 1) 的卡片长度,也就是最上的一张卡片覆盖第二张1/2,第二张超出第三张1/3,第三张超出第四张1/4,依此类推,最底的一张卡片超出桌面1/(n + 1)。下面有个图形的例子:

 

 

  

  现在给定伸出长度C(0.00至5.20之间),输出至少需要多少张卡片。

 

一次AC没啥好说的,贴代码:

// 1003.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(int argc, char* argv[])
{
    float len;
    char input[10];
    while(1)
    {
        scanf("%s",input);
        if(strcmp(input,"0.00")==0)
            break;
        len=atof(input);

        float ftemp=0;
        int i=1;
        while (1)
        {
            i++;
            float t;
            t=i;
            ftemp=ftemp+1/t;
            if(ftemp>len)
                break;
        }
        printf("%d card(s)\n",i-1);
    }

    return 0;
}

 

posted on 2013-12-17 11:48  alphaxz  阅读(231)  评论(0编辑  收藏  举报