当前位置:   article > 正文

蓝桥杯--跑步计划

蓝桥杯--跑步计划

问题描述

小蓝计划在某天的日期中出现 11 时跑 55 千米,否则只跑 11 千米。注意日期中出现 11 不仅指年月日也指星期。

请问按照小蓝的计划,20232023 年小蓝总共会跑步锻炼多少千米?例如,55 月 11 日、11 月 1313 日、1111 月 55 日、44 月 33 日 (星期一) 小蓝会跑 55 千米,而 55 月 2323 日小蓝会跑 11 千米 (示例日期均为 2023 年)


思路:    知道2023年是平年,四月三日是星期一 , 求出到四月三日一共的天数,再求七天的余数. 根据这个余数可以判断某天是否为星期一

所以,大致思路如下

  1. #include <iostream>
  2. using namespace std;
  3. int DAY(int month, int day)//由月和日,直接求天数
  4. {
  5. int add = 0;
  6. int M[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
  7. for (int i = 0; i < month; i++)
  8. {
  9. add += M[i ];
  10. }
  11. add += day;
  12. return add;
  13. }
  14. int main()
  15. {
  16. int b = DAY(4, 3) % 7;//已知(4,3)为星期一,求余数
  17. int M[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
  18. int day;
  19. int c = 0;//重复的
  20. int d = 0;//all 1
  21. int e = 0;//all 2
  22. for ( int x = 1; x <=12; x++)
  23. {
  24. for (int y = 1; y <=M[x-1]; y++)
  25. {
  26. if (x == 1 || x/10==1 || y / 10 == 1 || y % 10 == 1)
  27. {
  28. d++;//月,日总数
  29. day = DAY(x, y);
  30. if (day % 7 == b)
  31. {
  32. c++;//重复的
  33. }
  34. }
  35. }
  36. }
  37. for (int i = 1; i <= 365; i++)//求星期一总数
  38. {
  39. if (i % 7 == b)
  40. {
  41. e++;
  42. }
  43. }
  44. int f = d - c + e;//求总和
  45. f = f * 5 + 365 - f;
  46. cout << f<< endl;
  47. return 0;
  48. }

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

闽ICP备14008679号