解题思路:
首先是求反弹距离,第一次反弹1/2,第二次反弹1/2的1/2即为1/4,依此类推发现反弹距离是M的1/(2^n),所以距离可用这个规则求得。
之后是总距离,第一次落地距离为M,每反弹一次都走过了反弹距离的2倍,因此+2*s。但是推算后发现,只依靠单纯的一层循环会出现反弹距离多加了最后一次的问题,那么把最后一次减去不就好了?
注意事项:
参考代码:
#include<stdio.h>
#include<math.h>
int main()
{
double M, N;
scanf("%lf %lf", &M, &N);
double s, sum, sumT=0.0;
sum = M;
for (int i = 1; i <= N; i++)
{
s = M / pow(2,i);
sum = sum + 2 * s;
}
sum = sum - 2 * s;
printf("%.2lf %.2lf\n", s, sum);
system("pause");
return 0;
}
0.0分
0 人评分