题解 | #小球走过路程计算#

小球走过路程计算

http://www.nowcoder.com/practice/ddbb7021c0a7452f9044564234616913

题意整理

  • 给定小球的初始高度和落地次数,每次小球落地后,会反弹回原高度的一半,再落下。
  • 求落地若干次后,小球反弹的高度,以及最后一次落地时,经过的总距离。

方法一(循环)

1.解题思路

  • 定义一个变量distance,用于记录第n次反弹后经过的总距离。
  • 使用循环模拟落地反弹的过程,每次反弹,高度减半,每次经过的距离为反弹后距离的三倍,总距离只需将每次的距离累加。
  • 由于最后要计算第n次落地时经过的距离,所以要减去最后一次反弹的高度,即distance-h。

动图展示: alt

2.代码实现

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();

        //第n次反弹后经过的总距离
        float distance=0;
        for(int i=1;i<=n;i++){
            //高度减半
            h/=2;
            //记录距离相应的变化
            distance+=h*3;
        }
        //由于要计算第n次落地时经过的距离,所以要减去最后一次反弹的高度,即distance-h
        System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", distance-h));

    }
}

3.复杂度分析

  • 时间复杂度:总共需要循环n次,所以时间复杂度为O(n)O(n)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论
因为当前反弹高度为h,落地之前的高度为2*h,加起来就是3*h了
2 回复 分享
发布于 2021-12-02 20:07
如果输入100高度,一次弹跳答案就错了
1 回复 分享
发布于 2022-10-08 18:28 上海
n=0未考虑
点赞 回复 分享
发布于 2021-10-20 10:28
n=0没有意义吧,0次落地怎么会反弹
点赞 回复 分享
发布于 2021-10-20 13:17
为什么是这样 distance+=h*3; ???????????
点赞 回复 分享
发布于 2021-12-02 00:22
没考虑第一次落地
点赞 回复 分享
发布于 2022-02-16 15:08
有漏洞
点赞 回复 分享
发布于 2022-03-11 16:28
咱就是说有啥漏洞你倒是说呀
点赞 回复 分享
发布于 2022-07-02 15:15
这个算的是最高点落下再返回最高点的路程哦
点赞 回复 分享
发布于 2022-09-30 11:37 湖南

相关推荐

点赞 评论 收藏
分享
10 1 评论
分享
牛客网
牛客企业服务