zoukankan      html  css  js  c++  java
  • POJ1003 Hangover

    题目来源:http://poj.org/problem?id=1003

    题目大意:

      将一叠卡片堆放在桌边。如果有一张卡片,你可以最多让卡片的一半悬于桌边外。(假设卡片总是与桌边垂直的。)当有两张卡时,你可以让上面的一张卡片有一半悬于底下的卡片之外,下面的卡片则有1/3悬于桌外。故悬于桌外的卡片长度和为1/2 + 1/3 = 5/6.当有你张卡片时,总的悬于桌外的长度和最大为1/2 + 1/3 + 1/4 + ... + 1/(n - 1).其中,最顶端的卡片外悬1/2,第二张外悬1/3,第三张外悬1/4...最底部的一张外悬1/(n+1).如下图所示:

    输入:有多组测试样例组成,每行包含一个正的浮点数c,最小为0.01,最大为5.20,每个c恰好为3位。以0.00作为结束标志。

    输出:对于每一个测试样例,输出最少需要多少张卡片才能使总的外悬长度至少为c。使用Example Output中的格式输出。


     Sample Input

    1.00
    3.71
    0.04
    5.19
    0.00
    

    Sample Output

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

    本题题干中已经把公式给出,因为数据规模小,只需从小到大逐个检验n是否可行即可。

     1 //////////////////////////////////////////////////////////////////////////
     2 //        POJ1003 Hangover
     3 //        Memory: 252K        Time: 0MS
     4 //        Language: C++        Result: Accepted
     5 //////////////////////////////////////////////////////////////////////////
     6 
     7 #include <iostream>
     8 
     9 using namespace std;
    10 
    11 int main(void) {
    12     while (true) {
    13         float length = 0.0;
    14         cin >> length;
    15         if (length == 0) {
    16             break;
    17         }
    18         float f = 0.5;
    19         int i = 1;
    20         while (true) {
    21             if (f >= length) {
    22                 break;
    23             }
    24             else {
    25                 i++;
    26                 f += (1.0 / (i + 1));
    27             }
    28         }
    29         cout << i << " card(s)" << endl;
    30     }
    31     return 0;
    32 }
    View Code
  • 相关阅读:
    构造月份选择框
    自定义验证
    设置队列中文件上的“X”号的点击事件+uploadLimit动态加1
    easyui在table单元格中添加进度条
    js里生成guid
    宽高
    获取iframe中的tree
    form表单
    position详解
    java通过jdbc连接数据库并更新数据(包括java.util.Date类型数据的更新)
  • 原文地址:https://www.cnblogs.com/dengeven/p/3225616.html
Copyright © 2011-2022 走看看