7年里,007群有多少天的作业日正好是星期7?
1
对于007写作群的战友们来说,看到这题目的第一反应,心里可能会这样猜测:应该有近100天吧!因为按一年365天计算,7年共有2555天,逢7倍数的日期就是提交作业的日子(即每隔一周写一篇),总共交作业365次,难道恰逢星期七的情况连90天(占1/4)、或73天(占1/5)也不到吗?
这是一个有趣的脑洞问题,也是可以通过推理给出确切结论的问题。今天是2018年1月28日,正好是007群雷打不动的作业日,恰巧也是星期7。不知你注意到没有:2018年1月份的四次作业日都是星期七!
此时,估计你会立即掏出手机翻看2018年的日历,继而用你那娴熟的大拇指滑动起屏幕来,想看看接下来哪个月份的作业日也恰逢星期日。很遗憾的告诉你,大概要滑动10次才能找到“如此少见的星期七”。
7这个数字是007写作群的幸运数字,它通过互联网把全球五湖四海的爱写作成长的人们有效地连接起来了。007写作群每班77人在7年时间里坚持每7天(逢7倍数)输出一篇文章,走完这2555天后一起出发南极!
正因为这个特殊数字的缘故,加之我偶然发现一月份的作业日都是星期7,故由此产生了如题所述的疑问。而我给自己的提问是:能否通过直接的推理和分析给出该问题的答案?下面我们一起来看看,007群之作业日期存在的一些有趣特征。
2
007写作群除了去中心化的值月生制度外,有且仅有一个要求:每逢7的倍数的日期就是作业雨的日子。然而,每个月的总天数不超过31天,当月结束后重新轮回,这导致提交作业的日期存在以下三个特征:
(1)每月固定交四次作业(即7号、14号、21号和28号)。这是显而易见的,因为下一个7的倍数是35,而每月天数不会超过31天。
(2)每月四次提交作业的星期日期完全相同。因为设定了7的倍数,所以当月的7号是星期几(如周二),则后面三次的作业日同均为星期几(也是周二)。
(3)实际交作业的时间间隔最短为7天、最长为10天。由于每月28号会剩几天,所以离下月第一次交作业的时间可能有7天(2月无闰月)、8天(2月有闰月)、9天(小月末)和10天(大月末)。
以上三个特征虽然简单明显,却对回答本文的问题很关键。对于第二条特征,即便假设每月天数很长,也可以采用归纳法给出一般性的证明。但每月的总天数(31天)是7的4倍有余,一周七天轮回,故容易得出上述的特征(2)。
我们借此给出一个不言而喻的重要推论:
某月份四次作业日全为星期7的充分且必要条件是:该月任何一次作业日恰逢星期7。
为叙述方便,我们把满足这个推论的月份定义为“自然月”。换句话说,提交作业的自然月是指该月的四次作业日全是在星期7,比如2018年1月份就是007社群的自然月,不满足该推论的月份称为“非自然月”。因此,本文的问题等价于寻找7年时间里的自然月个数。
今天是1月28号星期7,也是2018年第1个“自然月”的最后一个作业日。
猜猜看,007写作群一共写7年84个月2555天,共有多少个“自然月”?其实,自然月远比我们想象的少!正因为它的稀缺性和蕴含数字7的特殊性,才值得我们去寻找、去探勘!
3
007写作群由覃杰于2016年建立,因为2016年时间不完整,仅从2017年开始计算。有了前面的分析和定义,现在我们来寻找2017年-2023年,这7年中到底存在多少个提交作业的自然月?(再次强调:本文定义的自然月是指当月的四次作业日均为星期7。根据特征(2)和推论,只要判断某次作业日是星期7,即可断定该月就是自然月。)
(1)先来看看2018年的情况(理解了这部分推理和分析,后面的结果自然就出来了)。
表1:2018年自然月的统计表上表罗列了2018年12个月的天数,以及每月天数对7取模运算后的结果。大家知道,取模运算是数论里定义的运算法则,记作a mod b,表示整数a除以整数b的余数。例如,1月份的取模运算结果为3,即3=31 mod 7,表示31除以7的余数是3,依次类推。
我们目前处在的1月份是自然月,表1标记为红色。那么下一个自然月是几月份呢?10月份!
如何算出来的呢?(不要翻日历!)今天是1月28号星期7,由取模运算易知1月份最后一天是星期3;2月份28天刚好7的倍数,那么它的最后一天和1月份的最后一天均为星期3。由此,我们可以立即断定3月份的最后一天是星期6;4月份的最后一天是星期1;5月份的最后一天是星期4,……等等。
上面判断每月最后一天的星期日期的过程,就是取模运算的过程:
1月份3=3 mod 7,为星期3;2月份3=(3+0)mod 7,为星期3;
3月份6=(3+0+3) mod 7,为星期6;4月份1=(3+0+3+2) mod 7,为星期1;
5月份4=(3+0+3+2+3) mod 7,为星期4;6月份6=(3+0+3+2+3+2) mod 7,为星期6;
……依次将前面某月以前的余数(包括自己的)累加起来,对7取模得到的余数,再根1月份最后一天的星期日期,就能立即得出该月的星期日期。
当把每月的余数累加起来刚好是7的倍数时(即对7取模为0),自然月的轮回就出现了!比如:1-9月份的余数累加为21,是7的倍数,即取模运算0=21 mod 7。也就是说9月份的最后一天是星期7,立即可知10月份的1号是星期1,7号作业日是星期7,则10月份四次作业日都是在星期7,10月份就是我们要寻找的自然月!
很复杂吗?上面是分析过程和校验过程,可以用一句话来阐释判断“自然月”的方法。
判断方法:把某月份与前一个自然月之间的所有月份的余数相累加并除以7,如果能整除则下一个月即为“自然月”,否则是“非自然月”。
(2)再来看看2017年-2023年的当月除7余数情况。
表2:2017-2023年的当月除7余数表对于2017-2023年这7年,我们可以很容易罗列出每年每月份的除7余数表。根据前面分析得出的判断方法,不难在表2中找出所有的自然月,用红色数字标识。
(3)最后看看2017年-2023年的自然月统计分布情况。
表3:007写作群7年内的自然月统计表于是,我们可以立即标出这七年内所有的“自然月”,如表3中的黄色方格所示。最右侧列出了每年自然月的个数。如:2017年仅有1个自然月(5月份);2018年有2个自然月(1月和10月)……2022年和2023年都只有1个自然月,分别是8月和5月。
从表3还可以看出,未来的7年里,提交作业的自然月不会出现在3月份、9月份和12月份。进一步给出这7年间自然月的分布图,如下所示:
图2 2017年-2023年自然月的分布图从表3和图2,现在我们可以回答本文开头的问题了:7年时间里,007写作群共有多少天的作业日恰好是星期7?
2017-2023年的7年84个月2556天时间里,四次作业日刚好是星期7的月份数,共有10个月(月份占比约11.90%),共有40天(天数占比约为1.56%)
这似乎是一个打诨插科的问题,但生活的美与乐趣,在于发现美与乐趣的眼睛,更重要的或许是你某个时刻一不小心的走心。用专业的知识去回答看起来并不靠谱的问题,如果是在胡说八道,也要一本正经地说完呵……
另外,我绝不会告诉你,上面寻找“自然月”的结果在日历里已验证过了。