`
贝壳水母
  • 浏览: 146252 次
  • 性别: Icon_minigender_1
  • 来自: 广州中低收入人群
社区版块
存档分类
最新评论

Problem1003

    博客分类:
  • POJ
阅读更多
/**
 * 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)
 */


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s;
		try {
			while (!"0.00".equals(s = br.readLine())) {
				double d = Double.parseDouble(s);
				//仅1张card时长度为2/1,因此以其为第一个底数,递增直到大于需要的长度
				double count = 2;
				while((d-=1/count)>0){
					count ++;
				}
				System.out.println((int)(count-1)+" card(s)");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



题目大意:说在桌子边上叠卡片能叠多长;只有一张卡片的时候,它可以有1/2的长度伸出来;两张卡片的话,叠在下面的就只能伸出1/3了,上面的那张依旧是露出1/2……
也就是求1/2+1/3+1/4+……1/n的了,上面用的方法嘛 没啥技术含量的,不过结果还是能出来,嘿嘿,我的目标还是accept就行
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics