具体数学-第8课(取整进阶一)

简介: 今天主要讲了取整与递归式的结合,还有取模的相关知识。

例题1


给出下列递归式:

image.png

现在不要求你求解,要你证明:

image.png

首先想到的就是数学归纳法,假设对于任意 image.png ,都有 image.png ,那么:

image.png

如果 image.png ,那么 image.png

如果 image.png ,那么 image.png ,这时不成立。

所以数学归纳法无法证明,今后我们会用其他方法来证明这个式子。

约瑟夫环新解


还记得约瑟夫环问题吗?详见第一节课。

这里我们继续推广到一般情况,如果有 n 个人,每隔 q 个人踢掉一个人,最后剩下的是几号?

初始编号为 image.png ,现在考虑一种新的编号方式。

第一个人不会被踢掉,编号加 1 ,变成 image.png ,然后第二个人编号变为 n+2 ,直到第 q 个人,他被踢掉了。

然后第 image.png 个人编号继续加 1 ,变成了 image.png ,依次下去。

考虑当前踢到的人编号为 image.png ,那么此时已经踢掉了 k 个人,所以接下去的人新的编号为 image.png

所以编号为 image.png 的人编号变成了 image.png ,其中 image.png

直到最后,可以发现活下来的人编号为 image.png ,问题是怎么根据这个编号推出他原来的编号?

image.png 为例,下图就是每个人新的编号:

image.png


image.png

所以他上一次的编号是

image.png

因为

image.png

所以上一次编号可以写为

image.png

因此最后存活的人编号可以用如下的算法计算:

N = qn
while N > n:
    N = k + N - n
ans = N

其中 image.png

如果我们用 image.png 替代 N ,将会进一步简化算法:

image.png

算法伪代码如下:

D = 1
while D <= (q-1)n:
    D = k
ans = qn + 1 - D

其中 image.png

相关文章
MATLABA快速入门(六):数值微积分
MATLABA快速入门(六):数值微积分
62 0
C#编程-25:数学运算符复习
C#编程-25:数学运算符复习
101 0
C#编程-25:数学运算符复习
|
算法 C++
具体数学-第8课(取整进阶二)
今天主要讲了取整与递归式的结合,还有取模的相关知识。
125 0
具体数学-第8课(取整进阶二)
具体数学-第9课(取整进阶与数论入门一)
今天讲完了取整的最后一部分知识,并给第四章数论开了个头。 首先还是以一道例题开始我们今天的课程。
127 0
具体数学-第9课(取整进阶与数论入门一)
具体数学-第9课(取整进阶与数论入门二)
今天讲完了取整的最后一部分知识,并给第四章数论开了个头。 首先还是以一道例题开始我们今天的课程。
141 0
具体数学-第9课(取整进阶与数论入门二)
具体数学-第7课(取整基础一)
首先声明一下,最近这段时间忙毕设,没时间更新博客了,大家见谅。 今天这节课开始讲解取整相关知识,主要是数论相关的了。
128 0
具体数学-第7课(取整基础一)
具体数学-第7课(取整基础二)
首先声明一下,最近这段时间忙毕设,没时间更新博客了,大家见谅。 今天这节课开始讲解取整相关知识,主要是数论相关的了。
126 0
具体数学-第7课(取整基础二)
具体数学-第2课 (一)
今天主要讲了关于递推式和求和的一些方法,主要是成套方法。
125 0
具体数学-第2课 (一)