链接:https://www.nowcoder.com/questionTerminal/2f6f9339d151410583459847ecc98446?answerType=1&f=discussion
来源:牛客网

假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?

最后的误差判断是小数点3位

输入描述:
输入起始高度,int型

输出描述:
分别输出第5次落地时,共经过多少米第5次反弹多高

示例1
输入
1
输出
2.875
0.03125

解题思路:
每次掉落弹起高度为原来的一半,所有第N次弹起高度为h=H/2^N;
计算经过路程:第1次掉落,比较特殊,路程只有高度一倍。从第2次落地开始开始有规律了,路程为反弹高度的两倍;
1---->1;
2---->0.52
3---->0.25
2
4---->0.1252
5---->0.0625
2
所有推导出公式:H/(2^(n-1))*2=2H/(2^(n-1))
然后循环把路程加起来就可以了

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        while(scan.hasNext()){
            int n=scan.nextInt();
            float sum=n;
            for(int i=2;i<=5;i++){
                sum=(float) (sum+(2*n/Math.pow(2, i-1)));
            }
            System.out.println(sum);
            System.out.println(n/Math.pow(2, 5));
        }
    }
}