【问题描述】
小明要进行一个跑步训练。初始时,小明体力充沛,体力值计为10000。小明跑步时每分钟损耗600体力值。小明休息时每分钟增加300体力值。体力值的损耗和增加都是均匀变化的。
小明打算跑一分钟,休息一分钟,再跑一分钟,再休息一分钟,如此循环。如果某个时刻小明的体力值变为0,他就停止训练。
请问小明在多久后会停止训练。为了使答案为整数,请以秒为单位输出答案。答案中只填写数字,不填写答案。
【参考答案】
3880
【解析】
本题可以采用模拟法,不过需要注意两点:一是题目要求以秒为单位;二是体力值必须变为0.所以本题的计算可以分为以下两部分。
(1)体力值大于600时,可以持续1分钟的体力消耗,则模拟损耗600体力值,再增加300体力值,一共经过120秒,循环得到时间。
(2)当体力值小于600且不为0时,每秒消耗10体力值,由剩余时间为体力值/10,直到体力值为0。
【参考程序】
#include <stdio.h>
int main(int argc, char** argv){int sum = 10000;int ans = 0;while(sum > 0){if(sum >= 600){sum -= 600;sum += 300;ans += 120;}else{ans += sum / 10;sum = 0;}} printf("%d\n",ans);return 0;
}
【程序运行如下】