约瑟夫问题及证明

约瑟夫问题

这是约瑟夫问题的基础版,在原书的结论的基础上给出证明。

这篇应该可以算题解,可以认为是大绿本(我市优秀初中生至少人手一本)上面数学题的题解。

还是有点数学建模味的,也有点课内 21 题味了。

题目描述

题面摘自《培优竞赛》新版第 198 页。

n n n 张的一摞卡片,从最上面一张开始按如下的顺序进行操作:把最上面的第一张卡片舍去,把下一张卡片放在这一摞卡片的最下面。再把原来的第三张卡片舍去,把下一张卡片放在最下面……反复这样做,直到手中只剩下一张卡片。问:剩下的这张卡片是原来那一摞卡片的第几张?

注:此处题目的表述是先删再留,和流行的其他一些表述中的先留再删不同。但不难发现问题的本质仍然相同,可以通过加一或减一的方法进行转化。

解析

初步尝试,还原题意

根据题意模拟一下这个过程。以 n = 18 n = 18 n=18 时为例:

初始
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18.

第一轮
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18.
发现剩下的都是偶数,在二进制表示下,末位为 0。
本轮删掉的最后一个数是 17,跳过了 18,下一轮将从 2 开始删。

第二轮
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18.
在二进制表示下,留下来的数,末两位为 00。
本轮删掉的最后一个数是 18,下一轮将跳过 4,从 8 开始删。

第三轮
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18.
在二进制表示下,留下来的数,末三位为 100。
本轮删掉的最后一个数是 16,下一轮将跳过 4,从 12 开始删。

第四轮
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18.
本轮将 12 删掉之后,只剩下 4。

经过四轮模拟,已经能够理解了题意,同时可知当 n = 18 n = 18 n=18 时结果为 4 4 4

同时有几个发现:

  1. 每轮所有被保留的数,在二进制表示下,当前位上的数字相同。
  2. 第一轮一定删掉末位是 1 的,留下末尾是 0 的。
  3. 如果本轮删掉了现有的 最后一个数,那么下一轮将跳过下一轮的第一个数,从 第二个数 开始删。
  4. 如果本轮删掉了现有的 倒数第二个数,那么下一轮将 从 第一个数 开始删。

小规模打表,寻找规律

1 ≤ n ≤ 18 1 \le n \le 18 1n18 应用以上方法:

卡片总数123456789101112131415161718
剩下第几张1224246824681012141624

观察,寻找规律,猜想:

n = 2 a n = 2^a n=2a a ∈ N a \in \mathbb N aN),剩下那张卡片恰好是原来一摞卡片的第 n n n 张。

n = 2 a + m n = 2^a + m n=2a+m a , m ∈ N a, m \in \mathbb N a,mN 1 ≤ m < 2 a 1 \le m < 2^a 1m<2a),剩下那张卡片是原来一摞卡片的第 2 m 2m 2m 张。

先证明特殊情况

对于上述第一种情况,即 n = 2 a n = 2^a n=2a 时,证明相对较简单。

a ≤ 1 a \le 1 a1 时显然。当 a > 1 a > 1 a>1 时:

第 1 轮肯定把所有二进制下第 0 位是 1 的删掉了, 最后一个数是 2 a 2^a 2a,肯定是没有动的,删了的是倒数第二个。

假设第 ( x − 1 ) (x-1) (x1) 轮中最后一个数 2 a 2^a 2a 还在,现在证明第 x x x x ≤ a x \le a xa)轮中 2 a 2^a 2a 还在。

因为上一轮中最后一个数还在,所以本轮中会从本轮的第一个数开始删,把当前位是 1 的数删掉。

此处的“当前位”,指的是二进制下的第 ( x − 1 ) (x-1) (x1) 位,这一位是 1 说明在二进制表示中有一项是 2 x − 1 2^{x-1} 2x1

而最后一个数当前位显然一定是 0,在第 x x x 轮中不会被删去,会得到保留。

应用数学归纳法,可知在一共 a a a 轮的删除操作中, 2 a 2^a 2a 会一直被保留。

所以剩下的最后一张卡片就是原来卡片的第 n n n 张。

再看一般的情况

直接证,比较难证,需要讨论的因素比较多。

那么可以尝试着换一个思路,看看能不能把一般的情况转化成特殊的 2 2 2 的次幂的情况。

看看,如果先抛掉 m m m 张的话,是不是就转化成 2 2 2 的次幂了呢?

确实,那么删掉 m m m 个数之后是怎样?

应该是删掉了 1 , 3 , 5 , ⋯   , 2 m − 1 1, 3, 5, \cdots, 2m-1 1,3,5,,2m1 m m m 个数,剩下 2 a 2^a 2a 个数,越过了 2 m 2m 2m,下一个要删掉的是 2 m + 1 2m+1 2m+1

注意到 m < 2 a m < 2^a m<2a,且 m m m 2 a 2^a 2a 都是整数,所以 m + 1 ≤ 2 a m+1 \le 2^a m+12a,所以 2 m + 1 ≤ 2 a + m = n 2m+1 \le 2^a + m = n 2m+12a+m=n 2 m + 1 2m+1 2m+1 存在且不越界。

这意味着得到一摞共 2 a 2^a 2a 张卡片,最顶上还没删但是将要删的编号是 2 m + 1 2m+1 2m+1,最底下的编号是 2 m 2m 2m

根据上一种情况的结论,此时答案就是最后一张, 2 m 2m 2m

应用

  • n = 64 = 2 6 n = 64 = 2^6 n=64=26 时,答案为 64 64 64
  • n = 100 = 2 6 + 36 n = 100 = 2^6 + 36 n=100=26+36 时,答案为 2 × 36 = 72 2 \times 36 = 72 2×36=72
  • n = 2024 = 2 10 + 1000 n = 2024 = 2^{10} + 1000 n=2024=210+1000 时,答案为 2 × 1000 = 2000 2 \times 1000 = 2000 2×1000=2000

总结

事实上,书中本讲的标题为《从简单情形看问题》,这一方法运用了三次。

第一次选一个比较有代表性的数,模拟题意,发现模拟过程中删数的基本规律,为下面的证明铺路。

第二次对小规模数据打表,寻找其中的规律。

第三次先对 n n n 2 2 2 的次幂的特殊情况先进行证明,再将一般情况转化为这种特殊情况。

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值