zoukankan      html  css  js  c++  java
  • poj1003

                                                                                                              Hangover
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 99369   Accepted: 48162

    Description

    How far can you make a stack of cards overhang a table? If you have one card, you can create a maximum overhang of half a card length. (We're assuming that the cards must be perpendicular to the table.) With two cards you can make the top card overhang the bottom one by half a card length, and the bottom one overhang the table by a third of a card length, for a total maximum overhang of 1/2 + 1/3 = 5/6 card lengths. In general you can make n cards overhang by 1/2 + 1/3 + 1/4 + ... + 1/(n + 1) card lengths, where the top card overhangs the second by 1/2, the second overhangs tha third by 1/3, the third overhangs the fourth by 1/4, etc., and the bottom card overhangs the table by 1/(n + 1). This is illustrated in the figure below.


    Input

    The input consists of one or more test cases, followed by a line containing the number 0.00 that signals the end of the input. Each test case is a single line containing a positive floating-point number c whose value is at least 0.01 and at most 5.20; c will contain exactly three digits.

    Output

    For each test case, output the minimum number of cards necessary to achieve an overhang of at least c card lengths. Use the exact output format shown in the examples.

    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)

    Source

    Mid-Central USA 2001
     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     double sum = 0.5;
     7     double num[301]={0,0.5};
     8 
     9     for(int i=2;sum<=5.20;i++)
    10     {
    11         sum = sum + 1.0/(i+1) ;
    12         num[i] = sum;
    13     }
    14     double n;
    15     while(cin>>n)
    16     {
    17         if(n==0.00)
    18             break;
    19         for(int i=1;i<301;i++)
    20         {
    21             if(num[i]>=n)
    22             {
    23                 cout<<i<<" card(s)"<<endl;
    24                 break;
    25             }
    26         }
    27     }
    28     return 0;
    29 }
  • 相关阅读:
    codeforces 455B A Lot of Games(博弈,字典树)
    HDU 4825 Xor Sum(二进制的字典树,数组模拟)
    hdu 1800 Flying to the Mars(简单模拟,string,字符串)
    codeforces 425A Sereja and Swaps(模拟,vector,枚举区间)
    codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)
    HDU 4148 Length of S(n)(字符串)
    codeforces 439D Devu and Partitioning of the Array(有深度的模拟)
    浅谈sass
    京东楼层案例思维逻辑分析
    浅谈localStorage和sessionStorage
  • 原文地址:https://www.cnblogs.com/jhldreams/p/3750656.html
Copyright © 2011-2022 走看看