【中等】算法nodeJs:求小球落地5次后所经历的路程和第5次反弹的高度

58 阅读1分钟

描述

假设有一个小球从 h 米高度自由落下,我们不考虑真实的物理模型,而是简洁的假定,该小球每次落地后会反弹回原高度的一半;再落下,再反弹;……。
求小球在第五次落地时所经历的路程和第五次反弹的高度。

在本题中,路程的计算仅需考虑垂直方向的变化。

输入描述:

在一行上输入一个整数 h(1≦h≦103) 代表小球的初始高度。

输出描述:

第一行输出一个实数,代表小球在第五次落地时所经历的路程。
第二行输出一个实数,代表第五次反弹的高度。

由于实数的计算存在误差,当误差的量级不超过 10−6 时,您的答案都将被接受。具体来说,设您的答案为 a ,标准答案为 b ,当且仅当 max(1,∣b∣)∣a−b∣​≦10−6 时,您的答案将被接受。

一定要注意 第五次落地第五次反弹

落地是从第一次下落就开始算了,反弹是下落完才开始计算

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    line = Number(await readline());
    let s = line,
        h = line;
    for (let i = 1; i < 5; i++) {
        s += h;
        h /= 2;
    }
    console.log(s);
    console.log(h/2);
})();