原题链接:[编程入门]自由下落的距离计算
解题思路:
已知条件为:从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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复