20届第三题跑步训练
/*
- 本题总分:10 分
【问题描述】
小明要做一个跑步训练。
初始时,小明充满体力,体力值计为 10000。如果小明跑步,每分钟损耗
600 的体力。如果小明休息,每分钟增加 300 的体力。体力的损耗和增加都是均匀变化的。
小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循
环。如果某个时刻小明的体力到达 0,他就停止锻炼。
请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。
答案中只填写数,不填写单位。
【答案提交】
3380
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路: 定义一个flag 600和300交换,进行迭代10000体力,if…else判断由flag决定
*/
package _11第十一届;
/*
* 本题总分:10 分
【问题描述】
小明要做一个跑步训练。
初始时,小明充满体力,体力值计为 10000。如果小明跑步,每分钟损耗
600 的体力。如果小明休息,每分钟增加 300 的体力。体力的损耗和增加都是均匀变化的。
小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循
环。如果某个时刻小明的体力到达 0,他就停止锻炼。
请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。
答案中只填写数,不填写单位。
【答案提交】
3380
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路: 定义一个标签600和300交换,进行迭代10000体力,if..else判断由标签决定
*/
public class Test03跑步训练 {
public static void main(String[] args) {
//这道题会超时
int n=10000;
int cnt=0;
boolean flag=true;
while(true) {
if(n<600&&flag) {//不足600体力
break;
}
if(flag) { //消耗600体力
n-=600;
flag=false;
}else { //消耗300体力
n+=300;
flag=true;
}
cnt++; //计算多少分钟
}
int time =cnt*60+n/10; //需要注意的是剩下的体力要秒算 600/60
System.out.println(time);
}
}