解题思路:逐步分解后发现只有第一次释放时是无反弹的,那么我们就可以把每次反弹的过程看成第从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分
1 人评分