标题【思特奇杯·云上蓝桥-算法集训营】第一周
题目:
题解:
题目核心为循环问题,因此考虑循环的条件——体力值=0。跑一分钟,休息一分钟为一个循环,即一个循环时间为120秒。这里得到一个初步的逻辑:
while(HP!=0)
{//HP为初始体力值 run为跑步消耗体力值 rest为休息增加体力值
HP=HP-run;
HP=HP+rest;
time+=120;
}
但是这里有一个容易忽略的问题:消耗体力值是大于休息增加体力值的,当体力值小于等于600时,关于时间的增加就不能单纯采用上面的加法。即在循环体的内部关于时间的计算有两种情况:
1、>600
2、<=600
在体力值小于等于600的情况跑完即停止锻炼!!!600体力值60秒,则time=HP/10。
则完整代码为:
#include<stdio.h>
int main()
{
int run=600; //跑步消耗体力值
int rest=300; //休息增加体力值
int HP=10000; //初始体力值
int time=0;
while(HP!=0)
{
if(HP>600)
{
HP=HP-run;
HP=HP+rest;
time+=120;
}
else
{
time+=HP/10;
break;
}
}
printf("小明在%d秒后停止锻炼!",time);
return 0;
}