程序员的数学——余数(0)

什么是奇数?我们可以认为奇数就是那些被2整除余1的数。那么什么又是偶数,偶数就是那些被2整除余0的数。所以,我们可以用除法来分组。

0.星期数(0)

今天是星期日,那么100天以后是星期几?

一周有7天,每过7天,便循环到相同的星期数。如果今天是星期天,那么7天以后,14天以后,21天以后...这种“7的倍数的天后”,都是星期天。因此98天后也是星期天,那么99天就是星期一,100天就是星期二。

这里我们可以用余数进行思考。

0  1  2  3  4  5  6

日  一      二      三     四      五      六

 100/7 = 14 余2

对照上面的表格可知,100天是星期二。

那么如果问题要改为1亿天以后呢?

100000000/7 = 14285714余2

由此可知1亿天之后仍旧星期二。这里为什么要除以7,是因为星期数以7为循环,因此我们就可以利用除法将其分组。

1.星期数(1)

10^100天以后是星期几?

我们并不急于求出10^100,而是想1,10,100,1000...这样,一次增加1的位权,观察其规律

0的个数

0      1天以后的星期数      1/7 = 0余1                   一

1      10天以后          10/7 = 1余3                    三

2      100天以后         100/7 = 14余2                      二

3      1000天以后        1000/7 = 142余6            六 

4      10000天以后           10000/7 = 1428余4                四

5      100000天以后        100000/7 = 14285余5             五

6      1000000天以后      1000000/7 = 142857余1        一

7      10000000天以后     10000000/7 = 1428571余3     三

果然有规律,余数以1,3,2,6,4,5的次序循环

1  3  2  6  4  5(天数除以7的余数)

一  三 二      六     四       五

也就是说每增加6个0,余数不变。因此周期数为6。将0的个数除以6,得到的余数为0,1,2,3,4,5的其中之一,分别对应星期一、星期三、星期二、星期六、星期五。

0  1  2  3  4  5

一    三      二      六     四       五

那么100/6 = 16余4,那么10^100天以后为星期四。

参考文献  程序员的数学  【日】结城浩

猜你喜欢

转载自www.cnblogs.com/JAYPARK/p/9614358.html