Echo

Echo 关注TA

大家好,我是Echo!

Echo

Echo

关注TA

大家好,我是Echo!

  • 加入社区2,199天
  • 写了311,243,303字

该文章投稿至Nemo社区   资讯  板块 复制链接


北大揭秘春晚刘谦魔术,背后其实是数学问题(附魔术步骤)

发布于 2024/02/11 22:43 127浏览 0回复 1,617

IT之家 2 月 11 日消息,刘谦在今年春晚表演的魔术引发网友热议,对此,北京大学官方公众号进行了详细解读,并揭秘背后的数学问题 ——“约瑟夫问题”。

魔术操作步骤:

  • 步骤 1:将准备好的 4 张扑克牌平均撕成两份,并叠在一起。

  • 步骤 2:将牌堆顶数量为【名字字数】的牌移至牌堆底。

  • 步骤 3:将前三张牌放在牌堆中间并取出牌堆顶的牌,放置在一旁。

  • 步骤 4:取出牌堆顶的若干张牌插入牌堆中间,此处选择的牌数为南方人取 1 张,北方人取 2 张,若不确定是南方人还是北方人取 3 张。

  • 步骤 5:男生扔掉牌堆顶 1 张,女生扔掉牌堆顶 2 张。

  • 步骤 6:执行“见证奇迹的时刻”循环,每说一个字,就取出牌堆顶一张牌放置在牌堆底。

  • 步骤 7:从牌堆顶开始,每次先将牌堆顶的一张牌放在牌堆底,再扔掉牌堆顶的一张牌,重复以上操作直到只剩一张牌,检查此牌和放置在一旁的牌是否吻合。若吻合,则魔术成功。

魔术步骤揭秘:

步骤一

我们令选择的四张扑克牌分别为 1234,将他们分别撕开后,产生了标号分别为 1234 的两套(半张)扑克牌,叠在一起后形成了从上至下标号分别为 12341234 的扑克牌堆。

图片

▲ 图源北京大学公众号,下同

步骤二

此时我们可以注意到,无论我们将牌堆顶的多少张牌移到堆底,得到的扑克牌堆编号(IT之家注:从上至下)都只会有以下几种结果:

12341234(名字字数被四整除)

23412341(名字字数模四余一)

34123412(名字字数模四余二)

41234123(名字字数模四余三)

观察以上可能的牌堆,我们可以发现产生的牌堆都具有以下性质:

1. 前四张牌和后四张牌的顺序完全一样

2. 前四张牌和后四张牌分别是 1234 的一个轮换

图片

步骤三

从这一步开始,我们只考虑当前牌堆中排在第四及第八的两张牌,记为 X,其他牌记为 0。那么根据上一步的讨论,可以得到当前的牌堆形如:000X000X。

将前三张放在牌堆中间后,无论这三张放在什么位置,最终产生的牌堆都将是:X000000X。

于是乎,被选择的用于配对的牌就将是 X,而另一张与之配对的牌(称为目标牌)将位于牌堆底。

图片

步骤四

在上一步之后,牌堆的编号为 000000X,于是,无论本轮中选择牌堆顶多少张牌插入牌堆中,都不会影响目标牌的位置,仍然处于牌堆底部。

图片

步骤五

此时男生的牌堆为:00000X。女生的牌堆为:0000X。

图片

步骤六

通过尝试可知,在经过步骤六后将得到如下的牌堆:

男生:0000X0

女生:00X00

图片

步骤七

图片

到此,便完成刘谦本次魔术的步骤揭秘,北京大学进一步解释称这其实是一个“约瑟夫问题”:

设有编号为 1,2,……,n 的 n 个人围成一个圈,从第 1 个人开始报数,报到 m 时停止报数,报 m 的人出圈。再从他的下一个人起重新报数,报到 m 时停止报数,报 m 的出圈...... 按照这个规则进行下来,直到所有人全部出圈为止。求最后留下来的人编号。

为了使问题简化,我们考虑 n 个人编号为 0 ~ n-1 的情况,每 m 个人退出一个人,我们称之为(n,m)问题。第一个人(即编号为在模 n 下同余 m 的人)退出之后,对剩下的 n-1 个人重新编号,则新问题的 k 号在原问题中对应 k+m 号。因此(n, m)问题的解 J (n, m) = J (n-1, m)+m 且 J (1, m) = 1(模 n 意义下)。据此,通过递推的方法可以得到 J (n, m)。在实践中,约瑟夫问题一般用代码进行求解。刘谦的魔术中使用的便是 m=2 的特殊情况。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。


本文由LinkNemo爬虫[Echo]采集自[https://www.ithome.com/0/750/001.htm]

本文标签
 {{tag}}
点了个评