华为机试-038-中等-HJ38.求小球落地5次后所经历的路程和第5次反弹的高度
一、描述
假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?
数据范围:输入的小球初始高度满足 1 ≤ n ≤ 1000 ,且保证是一个整数
1.1、输入描述
- 输入起始高度,int型
1.2、输出描述
- 分别输出第5次落地时,共经过多少米以及第5次反弹多高。
注意:你可以认为你输出保留六位或以上小数的结果可以通过此题。
二、示例
2.1、示例1
输入:
1
输出:
2.875
0.03125
三、答案(java)
3.1、方法一
遍历落地次数,第一次走过了落下高度这么多距离,然后弹起高度降低一半,然后走了弹起的高度这么多距离,完成一次循环,如果555个循环,累加距离,不断降低高度。
package com.tzq.hwod;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String s;
while ((s = bf.readLine()) != null) {// 多组输入
double h = Double.parseDouble(s);// 记录总的
double temp = h / 2;// 弹跳多高
for (int i = 1; i < 5; i++) {
h += temp * 2;
temp = temp / 2;
}
System.out.println(h);
System.out.println(temp);
}
}
}
四、答案(python 3)
4.1、方法一
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
for line in sys.stdin:
num=int(line[:-1])
print(num*2.875)
print(num*0.03125)