解题思路: 数学思路,先算再写代码。(好习惯!!!)
注意事项: 第一问很简单,直接1/2的n次方就行;第二问有点小复杂,如果记号选错了的话很容易得出差那么一点点的答案,就很烦。
以落地为记号,第一次落地,第二次落地.......第n次落地。第一次落地向下走了M,这算第一次落地,也就是说不算反弹的那M/2,
然后反弹的那M/2和下落的M/2算第二次落地,以此类推,可以画个图理解一下。
则可以简单明了的得到表格(方便你们理解):(都是以“落地“为记号,别搞错了!)
向下走的路:M M/2 M/4 M/8 M/16.......
向上走的路: 0 M/2 M/4 M/8 M/16.......
也就是说写一个循环N次,然后累加向上和向下走的路,就能算出总路程。
由于这里M对应的是0,其余对应的都相同,所以我用简单的sun*2-M就很快得到答案。
希望能帮到小白们。
参考代码:
#include <stdio.h>
#include <math.h>
int main ()
{
double M,N;
int i;
scanf("%lf %lf",&M,&N);
double H,sum=0,t=M;
for(i=0;i<N;i++)
{
sum+=t;
t=(1.0/2.0)*t;
}
H=pow(1.0/2.0,N)*M;
printf("%0.2lf %0.2lf",H,sum*2-M);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复