用一个表格来找规律
假设初始高度m为100
s=m;M=m.
第一次 | 第二次 | 第三次 | 第n次 | |
落地反弹高度h | 50 | 25 | 12.5 | h(n-1)/2 |
路程s | 100+50 | 100+50+50+25 =100+100+25 | 100+50+50+25+25+12.5 =100+100+50+12.5 | 循环(第n次就执行n次,n!=1) s+= M; |
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
float m, n, s, h, M, N;
cin >> m >> n; M = m; N = n;
h = 0; s = m;
while (n) //求高度
{
h = m / 2;
m = m / 2;
n--;
}
for (int i = 1; i < N; i++) //求路程,该循环反弹次数N不能取1
{
s += M;
M = M / 2;
}
cout << fixed << setprecision(2) << h << '\t'<< fixed << setprecision(2) <<s<<endl;
return 0;
}