首页 > 其他分享 >信息学奥赛一本通题目解析:1085:球弹跳高度的计算(循环)

信息学奥赛一本通题目解析:1085:球弹跳高度的计算(循环)

时间:2024-04-05 19:31:58浏览次数:28  
标签:信息学 1085 落地 10 经过 高度 距离 奥赛 反弹

【题目描述】

一球从某一高度hℎ落下(单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第1010次落地时,共经过多少米? 第1010次反弹多高?

输出包含两行,第1行:到球第1010次落地时,一共经过的米数。第2行:第1010次弹跳的高度。

【输入】

输入一个整数hℎ,表示球的初始高度。

【输出】

第1行:到球第1010次落地时,一共经过的米数。

第2行:第1010次弹跳的高度。

注意:结果可能是实数,结果用double类型保存。

提示:输出时不需要对精度特殊控制,用cout << ANSWER,或者printf("\%g",ANSWER)即可。

【输入样例】

20

【输出样例】

59.9219
0.0195312

【样例分析】

  • 初始高度:20米。

落地和反弹过程

  1. 第1次落地:球从20米高度落下,没有反弹之前,经过了20米。反弹高度为10米(原高度的一半)。

  2. 第2次落地:球从10米高度落下,加上反弹(10米),共经过20米。加上第1次落地时的20米,总经过40米。反弹高度为5米。

  3. 第3次落地:球从5米高度落下,加上反弹(5米),共经过10米。累计总距离变为50米。反弹高度为2.5米。

  4. 第4次落地:球从2.5米高度落下,加上反弹(2.5米),共经过5米。累计总距离为55米。反弹高度为1.25米。

  5. 第5次落地:球从1.25米高度落下,加上反弹(1.25米),共经过2.5米。累计总距离为57.5米。反弹高度为0.625米。

  6. 第6次落地:球从0.625米高度落下,加上反弹(0.625米),共经过1.25米。累计总距离为58.75米。反弹高度为0.3125米。

  7. 第7次落地:球从0.3125米高度落下,加上反弹(0.3125米),共经过0.625米。累计总距离为59.375米。反弹高度为0.15625米。

  8. 第8次落地:球从0.15625米高度落下,加上反弹(0.15625米),共经过0.3125米。累计总距离为59.6875米。反弹高度为0.078125米。

  9. 第9次落地:球从0.078125米高度落下,加上反弹(0.078125米),共经过0.15625米。累计总距离为59.84375米。反弹高度为0.0390625米。

  10. 第10次落地:球从0.0390625米高度落下,加上反弹(0.0390625米),共经过0.078125米。累计总距离为59.921875米。反弹高度为0.01953125米。

总结

  • 到球第10次落地时,一共经过的米数为59.921875米(取四舍五入可以得到题目输出的样例59.9219)。
  • 第10次弹跳的高度为0.01953125米(同样取四舍五入可以接近题目输出的样例0.0195312)。

直观理解

  • 每次落地,球都会反弹到前一次高度的一半。因此,随着反弹次数增加,球的反弹高度越来越小,经过的距离增量也越来越小。
  • 到第10次落地时,球总共经过的距离累积近60米,但最后一次反弹的高度已经非常小,不足2厘米,说明球的能量在多次反弹后已经大幅减少。

【思路分析】

  • 反弹次数控制:通过while循环控制球反弹的次数,确保球正好反弹10次。
  • 总距离计算:通过sum变量累计球的总运动距离。对于第一次落地,球只经过了h的距离;而从第二次开始,每次球都会先落下再反弹上去,经过的距离是h*2
  • 高度更新:每次落地后,球的高度都会减半,通过h /= 2;实现。
  • 输出:在完成所有反弹后,sum变量中存储的是球总经过的距离,而此时的h是第10次反弹后的高度。

通过循环控制和逐步更新h的值,同时累加每次落地和反弹的距离,最终计算出了总距离和第10次反弹的高度。

【代码实现】

#include <iostream>
using namespace std;

int main(){
    double h; // 定义初始高度变量
    double sum = 0; // 用于累计球经过的总距离
    cin >> h; // 从标准输入读取球的初始高度
    int i = 1; // 初始化计数器,用于记录反弹次数

    // 循环直到球完成第10次落地
    while(i <= 10){
        if(i == 1){ // 如果是第一次落地
            sum += h; // 只计算落地过程,因为第一次没有反弹
        }else{ // 从第二次落地开始
            sum += h * 2; // 每次落地后,球都会上升和下降,所以距离翻倍
        }
        h /= 2; // 每次落地后球的高度减半
        i++; // 更新反弹次数
    }

    // 输出总经过的距离和第10次反弹的高度
    // 注意:此时的h已经是第10次反弹后的高度,因为在最后一次循环中已经更新
    cout << sum << endl << h << endl;

    return 0;
}

标签:信息学,1085,落地,10,经过,高度,距离,奥赛,反弹
From: https://blog.csdn.net/lan_in/article/details/137401007

相关文章

  • 信息学奥赛一本通题目解析:1938:【07NOIP普及组】奖学金(排序)
    【题目描述】某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前55名学生发奖学金。期末,每个学生都有33门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学......
  • 信息学奥赛一本通题目解析:1415:【17NOIP普及组】图书管理员(字符串)
    【题目描述】图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个正整数。每位借书的读者手中有一个需求码,这个需求码也是一个正整数。如果一本书的图书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。小D刚刚当上图书馆的管理员,她知......
  • 信息学奥赛一本通题目解析:1204:爬楼梯(记忆化递归)
    【题目描述】树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数。例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共3种方法。【输入】输入包含若干行,每行包含一个正整数N,代表楼梯级数,1≤N≤30。【......
  • 生物信息学数据库分类
    生物信息学数据库(一)文献数据库1、PubMed:拥有超过两百六十万生物医学文献的数据库,这些文献来源于MEDLINE,也就是生物医学文献数据库、生命科学领域学术杂志、以及在线的专业书籍。链接:PubMed(nih.gov)PubMed存在的问题(1)搜索1995年前文献中排名是为以后的作者(2)搜索1976......
  • 初三奥赛模拟测试3
    初三奥赛模拟测试3T1网格图开幕雷击,T1先做2h,糊了个玄学复杂度的做法,会被点叉相交的数据卡,不过数据水,放过去了。考虑正解,枚举正方形可能出现的情况,对于每个正方形,尝试从上一个正方形转移,经过一些预处理,可以做到$O(n)$转移。懒得写正解了,去看其他HZOIers的题解吧T2序......
  • 初三奥赛模拟测试3
    前言我们的\(Shadow\)又\(41\)秒\(AC\)\(T0\)啦!是的又换题了,大多数人都做过,但是我没做过啊\(qwq\)。于是从别的地方扒了\(4\)道题,前两道是\(NOIP\)模拟赛的题,后两道从\(NOI\)模拟赛扒来的,知识点根本不会\(qwq\)。比赛链接T1网络图点击查看题面部......
  • HZOI初三奥赛模拟测试3-T2
    \(HZOI\)初三奥赛模拟测试\(3-T2\)题目描述给定序列\(a_1,a_2,\dotsa_n\),现在可以选择删除一些数,使得删除后\(\sum[a_i=i]\)最大做题历程一下午就做了这一个题,打到最后才发现时间复杂度\(O(\frac{n^2}{2})\)过不去,没时间优化了,最后\(73pts\),赛时最高,好像因为我多剪......
  • 生物信息学文章中常见的图应该怎么看?
    目录火山图热图箱线图森林图LASSO回归可视化图(套索图)交叉验证图PCA图ROC曲线图这篇文章只介绍这些图应该怎么解读,具体怎么绘制,需要什么参数,怎么处理数据,会在下一篇文章里面给出火山图火山图横轴表示与对照组的差异倍数,纵轴表示表达水平。整个图由两条竖着的虚线......
  • 13.【初三奥赛模拟测试2】
    估计也打不了多少\(qwq\)\(\Huge终于不垫底了。qwq\)初三奥赛模拟测试2T1南题解一道概率期望。一般都是从\(n\)开始递推到\(0\)。假设我们现在有\(i\)种枪,那么期望次数\[\largef_i=f_{i+1}+\fracn{n-i}\]因为当前有\(i\)种可能买到已经买过的枪,\(n-i\)......
  • 初三奥赛模拟测试2
    前言比赛链接——南昌起义。这辈子第一次\(rk~1\)。\(T1:\)概率期望,本来没学过,现学的(蓝书没看懂,还是网上的博客好理解),然后发现毕竟\(T1\)没那么难,知道概率期望是啥还是能做的。\(T2:\)本来看\(T1\)概率期望想先开\(T2\)的,但是发现不会就去学概率期望了,后来发......