已知一球从高空落下时,每次落地后反弹至原高度的四分之一再落下。编写一程序,从键盘输入整数n和m,求该球从n米的高空落下后,第m次落地时共经过的路程以及第m次落地后反弹的高度,并输出结果。
my code:
#include <stdio.h>
int main(){
int n,m,i;
scanf("%d%d",&n,&m);
double len = 0,height = n,distance;
for(i = 1;i <= m - 1;i++){
height *= 0.25;
len += 2 * height;
}
if(1 == m){
distance = n;
}else {
distance = len + n;
}
printf("%.2f\n%.2f",distance,height * 0.25);
return 0;
}
领悟:难点在于高度和路程的要求不一样,一个为碰撞前,一个为碰撞后,解决方法很简单,先写出同时的代码,再对其中一组数据倒退或者前进,即算出第m次的数据或第m+1次的数据,再对高度*1/4或使路程减去对应的碰后高度*2即可。
标签:distance,路程,高度,碰撞,len,height From: https://www.cnblogs.com/2874147746lijiacheng/p/17787872.html