POJ题目 1003Hangover(叠放纸牌)

POJ 1003 叠放纸牌

描述

您可以将多张纸牌悬在桌子上多远?如果您有一张卡,则可以创建一个最大长度为卡长的一半。(我们假设这些卡片必须垂直于桌子。)使用两张卡片,您可以使最上面的卡片悬垂在底部的卡片长度的一半,而最下面的卡片悬垂在桌面的卡片长度的三分之一,总最大悬垂为1/2 + 1/3 = 5/6卡长度。通常,您可以使n张卡片的悬垂度为1/2 + 1/3 + 1/4 + ... + 1 /(+1)牌的长度,其中顶牌在第二张牌上悬垂1/2,第二张牌在第三张悬垂1/3,第三张在第四张悬垂1/4,依此类推,而底牌在桌子上悬垂1 /。 (+ 1)。如下图所示。

输入

输入由一个或多个测试用例组成,其后一行包含表示输入结束的数字0.00。每个测试用例都是一条包含正浮点数c的单行,其浮点数c至少为0.01,最大为5.20;c将包含三位数字。

输出

对于每个测试用例,输出实现至少c个卡长度的突出所需的最小卡数。使用示例中显示的确切输出格式。

样本输入

1.00
3.71
0.04
5.19
0.00

样本输出

3 card(s)
61 card(s)
1 card(s)
273 card(s)

 

代码

用while循环,直到超过需要的长度

 

#include <iostream>
using namespace std;
int main()
{
    float k,s=0;//定义输入和总和变量
    int n;//定义纸牌个数变量
    while(1){//循环输入
        cin >> k;//输入需要达到的长度
        s=0;//初始化
        n=2;
        if(k==0.00) break;//结束循环
        while(s<k){//在s没到k是一直加
            s+=1.0/n;//s加1/n
            n++;//n加1
        }
        cout<<n-2<<" card(s)"<<endl;//输出需要纸牌个数
    }
    return 0;
}

 

posted @ 2021-02-24 17:26  KevinLikesCoding  阅读(204)  评论(0编辑  收藏  举报