编程每日刷题系列八(跑步锻炼)
2021-02-17 17:30 作者:Eric_Richard | 我要投稿
跑步锻炼
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了
激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年
10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
思路
首先设一个月份的数组,用来记录每个月的天数,然后考虑闰年平年对二月天数的影响。
因为题目问的是多少千米,那么普通天数1就相当于1千米,总和公式为:
总天数很容易算,那么月初但不是周一的天数如何考虑呢?我们只要设一个判断条件if((截至目前的总天数 + 6) % 7 != 1)
有朋友就要问了,为什么是+6呢?
因为他说了2000.1.1是周六,就相当于原数从Sun开始整体向右移了六个单位,这样是不是更好理解了
接下来就是算周一的天数,我们不妨画个图

以上橙线包裹的是2000.1,我们不妨就针对2000.1,如何将它补齐整除7?那当然是减2加6,因此(sum - 2 + 6) / 7就是这么来的
C++代码如下:
运行结果:

所以答案是8879
如果喜欢我的文章,请记得三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,下期更精彩!!!