POJ 1003 Hangover
这又是一个破水题。涉及到小学四年级的知识。
原题地址:http://poj.org/problem?id=1003
POJ 1003 卡片摆放
描述
你可以把一堆卡片摆出桌面多长呢?如果你有一张卡,你可以把这个卡片摆出桌面半张卡的长度。(我们假设卡片总会与桌子的边缘是垂直 [perpendicular] 的。)如果要放两张卡,那么最上面的那张会超出下面那张半张卡的长度,而下面那张会超出桌面三分之一张卡的长度,也就是说,它们的总长度是 [latex]\frac{1}{2}+\frac{1}{3}=\frac{5}{6}[/latex] 单位长度。一般地,如果你有 n 张卡,那么你可以摆出的长度是 [latex]\frac{1}{2}+\frac{1}{3}+\dots+\frac{1}{n+1}[/latex] . 此时,最上面的卡片超出桌子 [latex]\frac{1}{2}[/latex] (overhangs the table by 1/2), 第二张则超出桌子超出桌面的 [latex]\frac{1}{3}[/latex] , 以此类推,直到最后一张卡片,即第 n 张,超出桌子 [latex]\frac{1}{n+1}[/latex] . 图示如下:

输入
输入数据包含一组或多组。如果某一行出现了数据 0.00 , 说明你已经完成了对输入数据的读取。每行数据包含一个正浮点数 c, 最小值为 0.01, 最大值为 5.20; 并且保证输入的 c 刚好有 3 个数字。
输出
对于每种情况,输出能够达到要求长度所需卡片的最小数目。格式请参考样例输出。
样例输入
1.00 3.71 0.04 5.19 0.00
样例输出
3 card(s) 61 card(s) 1 card(s) 273 card(s)
解题思路
纯粹水题,就一个一个加。
源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); float length = 0.0f; while (cin.hasNextFloat()) { length = cin.nextFloat(); if (length == 0.0f) break; int cards = 1; while (length > 0.0f) length -= 1.0f / (float)++cards; System.out.println((cards - 1) + " card(s)"); } } } |
原创文章,转载请注明来源:http://euyuil.com/2252/poj-1003-hangover/
