赞
踩
本片博客用于记录此题的思路和解法
解题思路:
1. 使用double定义变量,且都要赋值为起始高度便于计算
2. 对于反弹的高度的计算,使用循环除2即可
3.对于总路程,由于已经将总路程赋值为起始高度,则只需要累加每次反弹的高度乘2(反弹上去与掉下来)
tips:要注意题目问是第N次落地时经过多少米,所以总路程算的是第N次之前的总路程,这里使用if做限定
完整代码:
- #include <iomanip>
- #include <iostream>
- using namespace std;
-
- int main()
- {
- double M, N;
- cin >> M >> N;
-
- double current_height = M;
- double total_distance = M;
-
- for (int i = 1; i <= N; i++)
- {
- current_height /= 2; // 落地一次反弹的高度
- if (i != N)
- { // 不算第N次落地后的上去和下来
- total_distance += current_height * 2; // 落地一次后反弹与落下的路程
- }
- }
-
- cout << fixed << setprecision(2) << current_height << " " << total_distance << endl;
-
- return 0;
- }
记忆:
1.double或float都可以定义浮点数,不过double精度更高
2.输出n位小数语句
cout << fixed << setprecision(n) << xxx <<endl;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。