当前位置:   article > 正文

十一届蓝桥杯----跑步训练_a:跑步训练。 小明要做一个跑步训练。初始时,小明充满体力,体力值计为 1000010000

a:跑步训练。 小明要做一个跑步训练。初始时,小明充满体力,体力值计为 1000010000

问题描述
小明要做一个跑步训练,初始时,小明充满体力,体力值计为 10000。

如果小明跑步,每分钟损耗 600 的体力。
如果小明休息,每分钟增加 300 的体力。
体力的损耗和增加都是 均匀变化的。

小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循环。

如果某个时刻小明的体力到达 0,他就停止锻炼, 请问小明在多久后停止锻炼。

为了使答案为整数,请以秒为单位输出答案,答案中只填写数,不填写单位。

答案提交
这是一道结果填空题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

思路:

这道题看着很简单,其实一不小心就会出错。

暴力模拟

注意:

有可能这次运动完,体力值就小于下一次消耗的体力了,所以需要特判一下退出循环的体力值和下一次是消耗还是回复体力。如果是回复体力,需要判断一下回复完体力,能否进行下一次运动。

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <algorithm>
  4. #include <iostream>
  5. #include <string.h>
  6. #include <queue>
  7. #include <stack>
  8. #include <map>
  9. #include <set>
  10. #include <vector>
  11. using namespace std;
  12. #define ll long long
  13. int t=10000,ans=0;
  14. int main() {
  15. // cout<<3880<<endl;
  16. // return 0;
  17. while(t>=300) {
  18. ans++;
  19. if(ans%2==0) {
  20. t+=300;
  21. } else
  22. t-=600;
  23. }
  24. if(ans%2==1) {
  25. t+=300;
  26. ans++;
  27. if(t>=600) {
  28. t-=600;
  29. ans++;
  30. t+=300;
  31. ans++;
  32. }
  33. }
  34. ans=ans*60;
  35. while(t) {
  36. t-=10;
  37. ans++;
  38. }
  39. cout<<ans<<endl;
  40. return 0;
  41. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/693163
推荐阅读
相关标签
  

闽ICP备14008679号