.hd-box .hd-fr

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

2024-02-11 17:06IT之家(浩渺(实习))109评

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

魔术操作步骤:

魔术步骤揭秘:

步骤一

我们令选择的四张扑克牌分别为 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之家所有文章均包含本声明。

下载IT之家APP,分享赚金币换豪礼
相关文章
大家都在买广告
热门评论
查看更多评论