[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)"); } } } |