标题:求小球落地5次后所经历的路程和第5次反弹的高度 | 时间限制:1秒 | 内存限制:32768K
假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?
数据范围:输入的小球初始高度满足 1<=n<=1000,且保证是一个整数
输入描述:
输入起始高度,int型
输出描述:
分别输出第5次落地时,共经过多少米以及第5次反弹多高。
注意:你可以认为你输出保留六位或以上小数的结果可以通过此题。
示例1
输入
1
输出
2.875
0.03125
可以写简单点写,高度*2.875,高度/32
package test;
import java.math.BigDecimal;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int h = scan.nextInt();
System.out.println(far(h));
System.out.println(high(h));
}
public static String far(int h){
BigDecimal bigDecimal = new BigDecimal(h+"");
bigDecimal = bigDecimal.add(new BigDecimal(h+""));
bigDecimal = bigDecimal.add(new BigDecimal(h+"").divide(new BigDecimal("2")));
bigDecimal = bigDecimal.add(new BigDecimal(h+"").divide(new BigDecimal("4")));
bigDecimal = bigDecimal.add(new BigDecimal(h+"").divide(new BigDecimal("8")));
return bigDecimal.stripTrailingZeros().toPlainString();
}
public static String high(int h){
BigDecimal bigDecimal = new BigDecimal(h+"");
bigDecimal = bigDecimal.divide(new BigDecimal("2"));
bigDecimal = bigDecimal.divide(new BigDecimal("2"));
bigDecimal = bigDecimal.divide(new BigDecimal("2"));
bigDecimal = bigDecimal.divide(new BigDecimal("2"));
bigDecimal = bigDecimal.divide(new BigDecimal("2"));
return bigDecimal.stripTrailingZeros().toPlainString();
}
}