题解 | #计算小球走过的路程和反弹高度#
计算小球走过的路程和反弹高度
https://www.nowcoder.com/practice/ac674f68367149d5ad1f857a379e69c9
#include <iostream> #include <iomanip> using namespace std; int main() { // 下落的高度和落地的次数 double h; int n; cin >> h; cin >> n; // write your code here...... double sum_h{-h}; // add a bias to simplify loop double curr_h{h}; std::cout << std::fixed << std::setprecision(1); for (int i = 1; i <= n; i++) { sum_h += 2 * curr_h; // up and down taks 2 curr_h curr_h /= 2; } cout << sum_h << " " << curr_h; return 0; }
计算总路过过程的时候,第一次只计算下降路程,第二次开始计算上升和下降路程。如果每次循环都执行判断 i==1 的话,显得有点臃肿,可以在总和中先减去 第一次的路程,也就是 sum = -h, 这样所有循环的计算方法一直,比较简洁。
我看到还有解题思路是,在输出时再减去 h