解题思路:由题意可知,输入的M为高度,N为第几次落地,令M的值为m、经过的总距离为h、第N次弹起的高度为x、上升的总距离为y。
以第N次弹起的高度x为对象,模型可看做是依次递减的等比数列,则已知高度M,可通过等比数列的通项公式求第N次弹起的高度为x=m/2^n。
把整个过程分为上升和落下两个过程,则第N次落下时,上升的距离之和可用等比数列的前n项和表示,易知经过的总距离为h=2*(m+y)-m。
再输出x,h的值即可。
注意事项:1、第N次落地时经过的距离不包括再次弹起时经过距离;
2、代数式的建立,等比数列的运用,模型的建构。
3、在输入2的n次方时,我使用了#include<math.h>函数,表示2的n次方时,代码为pow(2,n)。
4、输出时保留两位小数。
参考代码:
# include<stdio.h>
# include<math.h>
int main()
{ double m,n,i,x=0,y=0,h=0,z=0;
scanf("%lf %lf",&m,&n);
for(i=1;i<n;i++)
{
x=m/pow(2,n);
y+=m/pow(2,i);
h=2*(m+y)-m;
}
printf("%0.02lf %0.02lf",x,h);
return 0;
}
创作不易,点赞即支持。
0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复