zoukankan      html  css  js  c++  java
  • 13、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

    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)
     
    解题思路:刚开始看这道题,图文并茂还以为很难,结果是一道水题。不过既然做了就写一下:用了一个递归求n块板子的总悬挂长度,然后在主函数中比较输入长度和n块板子的总悬挂长度(n从1开始),当输入长度刚好小于或等于n块板子的悬挂长度时,按格式输出此时的n。
    具体代码:
     1 import java.util.*;
     2 public class Main {
     3      public static float totalLength(int n){
     4           if(n==1)
     5               return (float)1/2;
     6           return (float)1/(n+1)+totalLength(n-1);
     7      }
     8 
     9      public static void main(String[] args) {
    10           Scanner scanner=new Scanner(System.in);
    11           float temp;
    12           int i;
    13           while((temp=scanner.nextFloat())!=0.00f){
    14               for(i=1;temp>totalLength(i);i++);
    15               System.out.println(i+" card(s)");
    16           }
    17      }
    18 }

    做题感悟:原来POJ上也有水题,就当保持手感。

  • 相关阅读:
    matlab练习程序(单源最短路径Dijkstra)
    Android开发必须知道SERVICE的10件事
    Android 多种方式正确的加载图像,有效避免oom
    在Android中解决内存溢出 – OutOfMemoryError
    发布Android开源库,看这个文章就够了!
    发掘StateListAnimator的全部潜能
    Android开发中多进程共享数据
    Android使用FFMpeg实现推送视频直播流到服务器
    Android学Jni/Ndk 开发记录(一)
    一张图解释RxJava中的线程控制
  • 原文地址:https://www.cnblogs.com/langzi1996/p/6629547.html
Copyright © 2011-2022 走看看