链接: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.252
4---->0.1252
5---->0.06252
所有推导出公式: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));
}
}
}


京公网安备 11010502036488号