1
對于007寫作群的戰(zhàn)友們來說蘑拯,看到這題目的第一反應钝满,心里可能會這樣猜測:應該有近100天吧!因為按一年365天計算申窘,7年共有2555天弯蚜,逢7倍數(shù)的日期就是提交作業(yè)的日子(即每隔一周寫一篇),總共交作業(yè)365次偶洋,難道恰逢星期七的情況連90天(占1/4)、或73天(占1/5)也不到嗎距糖?
這是一個有趣的腦洞問題玄窝,也是可以通過推理給出確切結(jié)論的問題。今天是2018年1月28日悍引,正好是007群雷打不動的作業(yè)日恩脂,恰巧也是星期7。不知你注意到?jīng)]有:2018年1月份的四次作業(yè)日都是星期七趣斤!
此時俩块,估計你會立即掏出手機翻看2018年的日歷,繼而用你那嫻熟的大拇指滑動起屏幕來浓领,想看看接下來哪個月份的作業(yè)日也恰逢星期日玉凯。很遺憾的告訴你,大概要滑動10次才能找到“如此少見的星期七”联贩。
7這個數(shù)字是007寫作群的幸運數(shù)字漫仆,它通過互聯(lián)網(wǎng)把全球五湖四海的愛寫作成長的人們有效地連接起來了。007寫作群每班77人在7年時間里堅持每7天(逢7倍數(shù))輸出一篇文章泪幌,走完這2555天后一起出發(fā)南極盲厌!
正因為這個特殊數(shù)字的緣故,加之我偶然發(fā)現(xiàn)一月份的作業(yè)日都是星期7祸泪,故由此產(chǎn)生了如題所述的疑問吗浩。而我給自己的提問是:能否通過直接的推理和分析給出該問題的答案没隘?下面我們一起來看看懂扼,007群之作業(yè)日期存在的一些有趣特征。
2
007寫作群除了去中心化的值月生制度外右蒲,有且僅有一個要求:每逢7的倍數(shù)的日期就是作業(yè)雨的日子微王。然而,每個月的總天數(shù)不超過31天炕倘,當月結(jié)束后重新輪回啊央,這導致提交作業(yè)的日期存在以下三個特征:
(1)每月固定交四次作業(yè)(即7號、14號乓土、21號和28號)趣苏。這是顯而易見的梯轻,因為下一個7的倍數(shù)是35,而每月天數(shù)不會超過31天单绑。
(2)每月四次提交作業(yè)的星期日期完全相同浙炼。因為設定了7的倍數(shù),所以當月的7號是星期幾(如周二)蜗帜,則后面三次的作業(yè)日同均為星期幾(也是周二)。
(3)實際交作業(yè)的時間間隔最短為7天、最長為10天窥妇。由于每月28號會剩幾天娩践,所以離下月第一次交作業(yè)的時間可能有7天(2月無閏月)沮焕、8天(2月有閏月)旦事、9天(小月末)和10天(大月末)歪赢。
以上三個特征雖然簡單明顯单料,卻對回答本文的問題很關鍵换怖。對于第二條特征蟀瞧,即便假設每月天數(shù)很長铸屉,也可以采用歸納法給出一般性的證明昌屉。但每月的總天數(shù)(31天)是7的4倍有余间驮,一周七天輪回,故容易得出上述的特征(2)抱虐。
我們借此給出一個不言而喻的重要推論:
某月份四次作業(yè)日全為星期7的充分且必要條件是:該月任何一次作業(yè)日恰逢星期7恳邀。
為敘述方便内地,我們把滿足這個推論的月份定義為“自然月”阱缓。換句話說航背,提交作業(yè)的自然月是指該月的四次作業(yè)日全是在星期7,比如2018年1月份就是007社群的自然月起惕,不滿足該推論的月份稱為“非自然月”涡贱。因此,本文的問題等價于尋找7年時間里的自然月個數(shù)惹想。
今天是1月28號星期7问词,也是2018年第1個“自然月”的最后一個作業(yè)日。
猜猜看嘀粱,007寫作群一共寫7年84個月2555天激挪,共有多少個“自然月”辰狡?其實,自然月遠比我們想象的少垄分!正因為它的稀缺性和蘊含數(shù)字7的特殊性宛篇,才值得我們?nèi)ふ摇⑷ヌ娇保?/b>
3
007寫作群由覃杰于2016年建立薄湿,因為2016年時間不完整叫倍,僅從2017年開始計算。有了前面的分析和定義豺瘤,現(xiàn)在我們來尋找2017年-2023年吆倦,這7年中到底存在多少個提交作業(yè)的自然月?(再次強調(diào):本文定義的自然月是指當月的四次作業(yè)日均為星期7坐求。根據(jù)特征(2)和推論蚕泽,只要判斷某次作業(yè)日是星期7,即可斷定該月就是自然月桥嗤。)
(1)先來看看2018年的情況(理解了這部分推理和分析须妻,后面的結(jié)果自然就出來了)。
上表羅列了2018年12個月的天數(shù)砸逊,以及每月天數(shù)對7取模運算后的結(jié)果璧南。大家知道掌逛,取模運算是數(shù)論里定義的運算法則师逸,記作a mod b,表示整數(shù)a除以整數(shù)b的余數(shù)豆混。例如篓像,1月份的取模運算結(jié)果為3,即3=31 mod 7皿伺,表示31除以7的余數(shù)是3员辩,依次類推。
我們目前處在的1月份是自然月鸵鸥,表1標記為紅色奠滑。那么下一個自然月是幾月份呢?10月份妒穴!
如何算出來的呢宋税?(不要翻日歷!)今天是1月28號星期7讼油,由取模運算易知1月份最后一天是星期3杰赛;2月份28天剛好7的倍數(shù),那么它的最后一天和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;
……依次將前面某月以前的余數(shù)(包括自己的)累加起來概疆,對7取模得到的余數(shù)逗威,再根1月份最后一天的星期日期,就能立即得出該月的星期日期岔冀。
當把每月的余數(shù)累加起來剛好是7的倍數(shù)時(即對7取模為0)凯旭,自然月的輪回就出現(xiàn)了!比如:1-9月份的余數(shù)累加為21使套,是7的倍數(shù)罐呼,即取模運算0=21 mod 7。也就是說9月份的最后一天是星期7侦高,立即可知10月份的1號是星期1嫉柴,7號作業(yè)日是星期7,則10月份四次作業(yè)日都是在星期7奉呛,10月份就是我們要尋找的自然月计螺!
很復雜嗎?上面是分析過程和校驗過程瞧壮,可以用一句話來闡釋判斷“自然月”的方法登馒。
判斷方法:把某月份與前一個自然月之間的所有月份的余數(shù)相累加并除以7,如果能整除則下一個月即為“自然月”馁痴,否則是“非自然月”谊娇。
(2)再來看看2017年-2023年的當月除7余數(shù)情況。
對于2017-2023年這7年,我們可以很容易羅列出每年每月份的除7余數(shù)表济欢。根據(jù)前面分析得出的判斷方法赠堵,不難在表2中找出所有的自然月,用紅色數(shù)字標識法褥。
(3)最后看看2017年-2023年的自然月統(tǒng)計分布情況茫叭。
于是,我們可以立即標出這七年內(nèi)所有的“自然月”半等,如表3中的黃色方格所示揍愁。最右側(cè)列出了每年自然月的個數(shù)。如:2017年僅有1個自然月(5月份)杀饵;2018年有2個自然月(1月和10月)……2022年和2023年都只有1個自然月莽囤,分別是8月和5月。
從表3還可以看出切距,未來的7年里朽缎,提交作業(yè)的自然月不會出現(xiàn)在3月份、9月份和12月份谜悟。進一步給出這7年間自然月的分布圖话肖,如下所示:
從表3和圖2,現(xiàn)在我們可以回答本文開頭的問題了:7年時間里葡幸,007寫作群共有多少天的作業(yè)日恰好是星期7最筒?
2017-2023年的7年84個月2556天時間里,四次作業(yè)日剛好是星期7的月份數(shù)蔚叨,共有10個月(月份占比約11.90%)床蜘,共有40天(天數(shù)占比約為1.56%)
這似乎是一個打諢插科的問題,但生活的美與樂趣缅叠,在于發(fā)現(xiàn)美與樂趣的眼睛悄泥,更重要的或許是你某個時刻一不小心的走心虏冻。用專業(yè)的知識去回答看起來并不靠譜的問題肤粱,如果是在胡說八道,也要一本正經(jīng)地說完呵……
另外厨相,我絕不會告訴你领曼,上面尋找“自然月”的結(jié)果在日歷里已驗證過了。