解题思路: 数学思路,先算再写代码。(好习惯!!!)
注意事项: 第一问很简单,直接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 人评分
不知道哪里错了浏览:1226 |
【偶数求和】 (C++代码)浏览:785 |
震宇大神的杀毒软件 (C++代码)浏览:1173 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:783 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:548 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:539 |
简单的a+b (C语言代码)浏览:641 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:548 |
C语言程序设计教程(第三版)课后习题6.3 (C++代码)浏览:1067 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:593 |