题目描述
蜗牛爬通天塔,蜗牛有体力要求,体力值初始是100,每爬1小时体力消耗10,每小时向上30厘米,当体力值是到达60时蜗牛就爬不动了,需要休息,每小时恢复体力值20,直到体力值恢复成100,休息一小时掉落20厘米。
请问爬到N个小时后,在距离地面的多少的塔的位置
输入
1个整数N(1<N<1000)
输出
1个整数单位厘米。
样例输入
5
样例输出
100
代码
#include <iostream>
using namespace std;
int main() {
int N; // 输入的时间
cin >> N;
int stamina = 100; // 初始体力
int climbRate = 30; // 每小时上升高度
int consumeRate = 10; // 每小时体力消耗
int recoverRate = 20; // 每小时恢复体力值
int height = 0; // 蜗牛当前高度
int time = 0; // 当前时间
for (time = 1; time <= N; ++time) {
if (stamina >= consumeRate) { // 体力足够,爬行
height += climbRate;
stamina -= consumeRate;
} else { // 体力不足,休息并掉回部分高度
height -= recoverRate - (consumeRate - stamina);
stamina = recoverRate;
}
}
cout << height << endl;
return 0;
}