题解 | 小球走过路程计算
小球走过路程计算
https://www.nowcoder.com/practice/ddbb7021c0a7452f9044564234616913
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
float h=scanner.nextFloat();
int n =scanner.nextInt();
//write your code here......
float sum = -h;
for(int i=0;i<n;i++){
sum = sum + 2*h;
h = (float)0.5*h;
}
System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", sum));
}
}
可以发现,除了第一次撞地前,每次两次撞地之间都是先向上弹起再下落相同的距离,这个距离会减半,但是这个流程不变。那么,可以假设第一次也是从地面升起再撞向地面,每次都会再积累2倍高度的路程,那么总路程sum就额外多了一倍的那第一次撞地前的高度,所以要预设sum=-h。第一次撞地了,sum加上2*h,然后高度减半,用这个减半后的高度作为第一次撞地与第二次撞地之间小球弹起的高度。如此累加,到了第n次撞地,得到此时的总路程,再把高度减半,得到之后小球弹起的高度。
