题解 | #求小球落地5次后所经历的路程和第5次反弹的高度#
求小球落地5次后所经历的路程和第5次反弹的高度
http://www.nowcoder.com/practice/2f6f9339d151410583459847ecc98446
import java.util.*;
import java.math.*;
public class Main {
//计算除法
public static double divDouble(double m1, double m2) {
BigDecimal p1 = new BigDecimal(Double.toString(m1));
BigDecimal p2 = new BigDecimal(Double.toString(m2));
return p1.divide(p2).doubleValue();
}
//计算乘法
public static double multiplyDouble(double m1, double m2) {
BigDecimal p1 = new BigDecimal(Double.toString(m1));
BigDecimal p2 = new BigDecimal(Double.toString(m2));
return p1.multiply(p2).doubleValue();
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int first = sc.nextInt();
double hight = multiplyDouble(first, 1.0);
double sum = hight;
double five = 0;
//模拟5次反弹
for (int i=0; i<4; i++) {
hight = divDouble(hight, 2.0);
sum = sum + multiplyDouble(hight, 2.0);
}
//输出总和,再计算一次反弹才是第五次高度
System.out.println(sum);
System.out.println(divDouble(hight, 2.0));
}
}
}