# [PKU] P1003: Hangover

### 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

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

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 |
1.00<br />3.71<br />0.04<br />5.19<br />0.00 |

### Sample Output

1 |
3 card(s)<br />61 card(s)<br />1 card(s)<br />273 card(s) |

### Source

### Solution:

[#M_ more.. | less.. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.*; public class P1003 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); float limit; int cards; while(true){ if((limit=sc.nextFloat())<=0){ break; } float len = 0.0f; for(cards=1; len<limit;++cards){ len+=1.0/(float)(cards+1); } System.out.println(cards-1+" card(s)"); } } } |