A题:跑步训练
问题描述:
小明要做一个跑步训练。
初始时,小明充满体力,体力值计为 10000。如果小明跑步,每分钟损耗600 的体力。如果小明休息,每分钟增加 300 的体力。体力的损耗和增加都是均匀变化的。
小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循环。如果某个时刻小明的体力到达 0,他就停止锻炼。
请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。
答案中只填写数,不填写单位。
思路:
1、找出小明跑步+休息一套下来,到达极限的次数,由题意得:10000-300x<=600
****也就是说,小明做完一套完整的休息+跑步后,剩下的体力能不能维持下一次的跑步?
2、由上一步的次数 * 2(因为共耗时两分钟) * 60+上一步剩下的体力 * 0.1(60/600)=总用时
代码:
# include<stdio.h>
int main()
{
int u,d,sum=10000,t;
scanf("%d %d",&u,&d);
for(t=1; ;t++)
{
sum=sum-u+d;
if(sum<u)
{
break;
}
}
t =t*2*60+sum*0.1;
printf("%d ",sum);
printf("%d",t);
return 0;
}
相似题型——青蛙爬墙
问题描述:
有一口井深h米,井底有只青蛙,它每个白天能够沿井壁向上爬m米,夜里则顺井壁向下滑n米,若青蛙从某个早上开始往外爬,试编一个函数,对于任意指定的h,m,n值(均为自然数),计算青蛙多少天能爬出井口?
思路:
1、找出青蛙一套下来,到达极限的次数,由题意得:h-(m-n)x<=m
2、由上一步的完整天数+1=总天数
代码:
# include<stdio.h>
int main()
{
int l,u,d,t;
scanf("%d %d %d",&l,&u,&d);
for(t=1; ;t++)
{
int n;
n=l-(u-d)*t ;
if(n<=u)
{
break;
}
}
t=t+1;
printf("%d",t);
return 0;
}