Talk is cheap, show me the code.
一、問題描述
假設一個球從任意高度自由落下,每次落地後反跳回原高度的一半; 再落下, 求它在第5次落地時,共經歷多少米?第5次反彈多高?
/**
* 統計出第5次落地時,共經過多少米?
*
* @param high 球的起始高度
* @return 英文字母的個數
*/
public static double getJourney(int high)
{
return 0;
}
/**
* 統計出第5次反彈多高?
*
* @param high 球的起始高度
* @return 空格的個數
*/
public static double getTenthHigh(int high)
{
return 0;
}
輸入描述:
輸入起始高度,int型
輸出描述:
分別輸出第5次落地時,共經過多少米第5次反彈多高
輸入例子:
1
輸出例子:
2.875
0.03125
二、問題分析
這是一道基本的物理題,計算第五次落地經過的路程和第五次反彈的高度,都和起始下落高度成線性關係。比較投機取巧的方法是利用輸入例子進行等比例縮放就可以求出結果。
解題方式1:
先求解出計算公式,然後按照公式計算。
#include <iostream>
using namespace std;
int main()
{
int n;
while (cin >> n)
{
cout << 23.0 / 8 * n << endl;
cout << n / 32.0 << endl;
}
return 0;
}
解題方式2:
直接根據給出高度爲1的例子,因爲成線性關係,所以直接等比例縮放即可。
#include <iostream>
using namespace std;
int main()
{
int n;
while (cin >> n)
{
cout << 2.875 * n << endl;
cout << n * 0.03125 << endl;
}
return 0;
}