1003_Java

作者: 李小佛 | 来源:发表于2019-06-18 17:16 被阅读0次

    题意:
    这道题的意思是(先不考虑物理学上是否合理):N张卡片叠放在桌子上(从上到下编号第1.2.3.4...n张),每张卡片都有一部分悬空,如果只有一张卡片,那么最多1/2悬空,如果有两张卡片,那么第一张最多1/2悬空,第二张最多3/1悬空,如果有三张卡片,那么第一张最多1/2悬空,第二张最多1/3悬空,第三张最多4/1悬空,如果有N张卡片,那么叠放后,最大的悬空总长度则为1/2+1/3+1/4+1/5+...+1/(n+1)。
    输入悬空总长度x,求出能达到x值的最少的卡片张数n,如果输入的是0.00,则停止计算。
    转换为公式则为:
    1/2+1/3+1/4+1/5+...+1/(n+1)=x。输入x的值,求出n的值。

    Input
    卡片悬空的总长度

    Output
    能够满足这个长度的最小卡片数量

    解题思路:
    穷举法

    
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
    //        1/2+1/3+1/4+1/5+...+1/(n+1)=x。输入x的值,求出n的值。
            Scanner sc = new Scanner(System.in);
            while (sc.hasNext()) {
                float inputLength = sc.nextFloat();
                if (inputLength == 0.00) {
                    return;
                }
                int count = 0;
                while (true) {
                    float currentLength = 0f;
                    count++;
                    for (int i = 0; i < count; i++) {
                        currentLength += 1f / (i + 2);
                    }
                    if (currentLength >= inputLength) {
                        break;
                    }
                }
                System.out.println(count + " card(s)");
            }
        }
    }
    

    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)

    相关文章

      网友评论

          本文标题:1003_Java

          本文链接:https://www.haomeiwen.com/subject/vdfqqctx.html