第三章: 余数–周期性和分组
星期问题
来看一道简单的题目:今天星期日,那么 100 天以后星期几?
这个问题最笨的方法就是数数了。不过那样也是颇为费事,从余数方向考虑:一个礼拜 7 天,100 天等于 14 个礼拜周期还剩两天(100 = 14*7 + 2)。于是答案就是星期 2 了。
假设现在题目变成了 1 亿天之后是星期几,我们还是可以用取余的思想:100000000 = 14285714*7 + 2 。同样的, 答案也是星期 2 。
如果数字再大一点,10^210 天之后是星期几呢?这么大的数字,如果用计算器直接计算肯定是不行的,一般的编程语言也没有存这么大数据的整形数据类型。我们这一次还是利用余数的思想:
10^0 = 1 除以 7 结果为 0 余 1
10^1 = 10 除以 7 结果为 1 余 3
10^2 = 100 除以 7 结果为 14 余 2
10^3 = 1000 除以 7 结果为 142 余 6
10^4 = 10000 除以 7 结果为 1428 余 4
10^5 = 100000 除以 7 结果为 14285 余 5
10^6 = 1 除以 7 结果为 142857 余 1
10^7 = 10 除以 7 结果为 1428571 余 3
10^8 = 100 除以 7 结果为 14285714 余 2
10^9 = 1000 除以 7 结果为 142857142 余 6
10^10 = 10000 除以 7 结果为 1428571428 余 4
10^11 = 100000 除以 7 结果为 14285714285 余 5
10^12 = 1 除以 7 结果为 142857142857 余 1
我们已经可以看出规律了,余数以 1、3、2、6、4、5
的顺序循环,也就是说,1 后面每增加 6 个 0,余数也即星期数和增加前相同。那么 10^210 天后的星期数为 210(1 后面一共 210 个 0) % 6 的值对应上述循环的结果(1(下标为 0)、3(下标为 1)、2(下标为 2)、6(下标为 3)、5(下标为 4)、4(下标为 5)
),即为星期 1。
乘方的思考题
1234567^(987654321) 的个位数是什么? 手算?计算器?事实上这两种方法都行不通,原因就是因为数字太大了。**事实上,一个数的 n 次方的末位数只和这个数本身的末位数和 n 有关。** 我们来看一下:1234567^0 的个位数 = 1
1234567^1 的个位数 = 7
1234567^2 的个位数 = 9
1234567^3 的个位数 = 3
1234567^4 的个位数 = 1
1234567^5 的个位数 = 7
1234567^6 的个位数 = 9
1234567^7 的个位数 = 3
1234567^8 的个位数 = 1
1234567^9 的个位数 = 7
我们发现规律了:个位数是1、7、9、3
这四个数的循环。所以 1234567^(987654321) 的个位数其实就等于 987654321 % 4 的结果对应1、7、9、3
这四个数就可以了:因为 987654321 % 4 = 1,所以答案是 7。
即 1234567^(987654321) 的个位数为 7 。
哥德堡的七桥问题
这个问题源于一个故事:很久以前,一个叫哥尼斯堡的小城,小城被河流分成了 4 块陆地(图中编号为 A、B、C、D)。人们为了连接这些陆地,建立了 7 座桥:
现在问题是需要寻找出走遍 7 座桥的方法,但是需要遵守以下条件:
1、走过的桥不能再走
2、可以多次经过同一块陆地
3、可以以任意陆地为起点和终点
其实这个就是 “一笔画” 的问题,如果每一种情况都去试一下的话,是相当复杂和有难度的。我们来考虑简化一下问题模型:将陆地简化成图的顶点,把桥简化成图的边,那么这个问题就可以创建出以下的模型:
我们仔细思考一下,假设对于这个图我们可以找出符合规则的走法,那么每当经过一块陆地时(一个图顶点),如果这个顶点不是起点或者终点,该顶点的度(边)应该减 2 (走到这块陆地需要消耗一座桥,走出这块陆地需要消耗一座桥)。那么扩展到全图的顶点来说,除了起点和终点,其他所有顶点的度应该是 2 的倍数(即为偶数),因为每经过一个块陆地都需要消耗和这块陆地相连的 2 座桥。
而对于起点和终点来说呢?因为没有限制起点和终点是否可以相同,那么需要分两种情况:
1、起点和终点为同一个点:这种情况下,我们从一个点开始最后还要回到这个点,
所以这个起点的度也需要是 2 的倍数(偶数),此时图中所有的顶底的度应该为偶数;
2、起点和终点不是同一个点:这种情况和上面情况相反,需要满足起点和终点的度为奇数,
所以此时图中应该有两个顶点的度为奇数,其他顶点的度为偶数。
好了,我们已经知道了规律了,如果一个图可以按照上述定义的条件走完,那么其中顶点应该满足以下两个条件之一:
1、图中所有的顶点的度为偶数
2、图中两个顶点的度为奇数(对应起点和终点),其他顶点的度为偶数
我们回头再看一下上面我们建立的图模型:其中所有顶点的度都为奇数,因此对于上述图我们无法找出符合上述规定条件的走法。
课后对话
学生:老师,我的人生出现了 360 度的大转弯呢! 老师:360 度的话,不就没发生变化吗?第四章: 数学归纳法
数学归纳法是证明有关于整数的结论对于 0 以上的所有整数(0、1、2、3、4…)是否成立时所用的方法。
假设现在要用数学归纳法证明:结论 P(n) 对于 0 以上的所有整数 n 都成立
。我们需要经过两个步骤:
步骤1:
证明 P(0) 成立;
步骤2:
证明不论 k 为 0 以上的哪个整数,若 “P(k) 成立,则 P(k+1) 也成立”。
步骤 1 中,要证明 k 为 0 时结论 P(0) 成立,我们称其为 基底。
步骤 2 中,要证明无论 k 为 0 以上哪个整数," 若 P(k) 成立,则 P(k+1) 成立"。我们把步骤 2 称作 归纳。
如果步骤 1 和步骤 2 都能得到证明,就证明了 结论 P(n) 对于 0 以上的所有整数 n 都成立
。
高斯的结论
在你面前有一个空的存钱罐。
第一天往存钱罐里投入 1 元。
第二天往存钱罐里投入 2 元。
第三天往存钱罐里投入 3 元。
第四天往存钱罐里投入 4 元。
第五天往存钱罐里投入 5 元。
那么第 100 天投入前之后总金额为多少?
这个问题其实就是求 (1 + 2 + 3 + 4 + … + 100)的值。如果我们没有学过等差数列等一些数学知识,最容易想到的方法就是逐个想加了。数学王子高斯 9 岁时候也遇到了这个问题,高斯用了一个很巧妙的方法,很快就得出了答案。
高斯是怎么算的呢:
1 + 2 + 3 + 4 + … + 100 顺序计算的结果和 100 + 99 &#