### 思路
1. 初始化总距离为0,初始高度为100米。
2. 使用循环计算第 `n` 次落地时的总距离和弹起高度:
- 每次落地增加当前高度到总距离。
- 每次弹起增加当前高度的一半到总距离,并更新当前高度为其一半。
3. 输出总距离和第 `n` 次弹起的高度,保留三位小数。
### 伪代码
1. 初始化 `total_distance = 0.0`,`height = 100.0`
2. 循环 `n` 次:
- `total_distance += height` // 落地
- `height /= 2` // 弹起高度
- `total_distance += height` // 弹起
3. 输出 `total_distance` 和 `height`,保留三位小数
### C++代码
#include <iostream>
#include <iomanip>
int main() {
int n;
std::cin >> n;
double total_distance = 0.0;
double height = 100.0;
for (int i = 0; i < n; ++i) {
total_distance += height; // 落地
height /= 2; // 弹起高度
total_distance += height; // 弹起
}
// 第 n 次落地时不再弹起,所以减去最后一次弹起的高度
total_distance -= height;
std::cout << std::fixed << std::setprecision(3) << total_distance << " " << height << std::endl;
return 0;
}