解题思路:逐步分解后发现只有第一次释放时是无反弹的,那么我们就可以把每次反弹的过程看成第从2项开始的等比数列。

注意事项:注意我是指把每一次反弹当作一项,也就是说一次反弹包含上行和下行,当然也不要忘记最后加上第一项


该题目使用数学方法确实十分简洁,难点在于把每次反弹分解细化,代码上新手容易出现的问题是浮点和整形数据的类型转换

勾起回忆呢,高中时期在数学和物理中做过无数道各种类型的抛射类问题,今天又以不同的方式,解决了相似的题目。

  

如有问题欢迎指正

参考代码:

#include<stdio.h>

#include<math.h>

int main()

{

int n,h;

double sum,h1;

scanf_s("%d%d", &h,&n);//输入高度,和弹跳次数

h1 = (h * (pow(1.0/2.0, n)));//最后一次弹跳高度

sum = 2 * h * (1 - pow(1.0/2.0, n-1))+h;//注意此处最后一次弹跳高度不计入总路程

printf("%.2f %.2f", h1, sum);

return 0;

}


点赞(0)
 

0.0分

1 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论