import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// double接收 int会在后面的计算丢失精度
double h = in.nextInt();
double s = 0, temp;
// 落地 -> 弹起 为一次历程
for (int i = 0; i < 5; i++) {
// 一次历程的路程 = 落地的h + 弹起的0.5h
temp = 1.5 * h;
// 高度缩减为之前的一半
h *= 0.5;
// 累加路程
s += temp;
}
// 减去最后一次弹起的高度就是第五次落地走的路程
System.out.println(s - h + "\n" + h);
}
}
还有个更简单的方法 直接计算 设第一次落地前高度为h 则总路程
s = h + 1/2 *h
+ 1/2 * h + 1/4 * h
+ 1/4 * h + 1/8 * h
+ 1/8 * h + 1/16 * h
+ 1/16 * h
第五次落地弹起的高度为 1/32 * h
不难发现 s和h是线性关系 即 s = k * h
设输入的h为h0 输出的s为s0 则有
s/h = s0/h0
将示例的s和h带入 可得
2.875/1 = s0/h0
s0 = 2.875 * h0
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double h = in.nextInt();
System.out.println(h * 2.875 + "\n" + h * 0.03125);
}
}

京公网安备 11010502036488号