解题思路:

    已知条件为:从M米高度自由下落,每次落地后返回原高度的一半。


1、它在第N次落地时反弹多高?

    球第一次掉落反弹高度为M/(2*1),第2次掉落反弹高度为M/(2*2)……则第N次掉落反弹高度为M/(2*N)


2、共经过多少米? 

    问题“共经过多少米”是:球从开始落下到落地的总路程 ;

    球从开始落下到第N次落地的总路程=球从开始落下到第N次落地反弹的总路程-第N次的反弹高度;

    球从开始落下到第N次落地反弹的路程=(M/(2*1))*3+(M/(2*2))*3+……+(M/(2*N))*3;

    第N次的反弹高度=第N次掉落反弹高度为M/(2*N)。


注意事项:

    由于输出格式要保留两位小数,则需要用到头文件<iomanip >中的 setprecision(n) 设置精度和setiosflags(ios::fixed);

    其中setprecision(n)设置浮点数的有效数字为n;

    setiosflags(ios::fixed)设置浮点数以固定的小数位数显示。


参考代码:

#include<iostream>
using namespace std;
#include<iomanip>
int main()
{
    int M, N;
    double S, H;
    cin >> M >> N;
    S = 0;
    H = M;
    for (int i = 0; i < N; i++)
    {
        H /= 2;    //球的反弹高度
        S += H * 3; //球从开始到落下到落地反弹的总路程
    }
    S -= H;        //球从开始落下到第N次落地反弹的总路程-第N次的反弹高度
    cout << setiosflags(ios::fixed) << setprecision(2) << H << " " << S << endl;
    return 0;
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论