解题思路:    数学思路,先算再写代码。(好习惯!!!)

注意事项:    第一问很简单,直接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分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论