魔术《守岁共此时》揭秘

2024-02-10 19:12
文章标签 魔术 揭秘 此时 守岁

本文主要是介绍魔术《守岁共此时》揭秘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

魔术介绍

魔术《守岁共此时》是 2024 2024 2024 年春节联欢晚会上刘谦表演的魔术。刘谦共表演了两个魔术,其中的第二个魔术为观众共同参与的魔术。

第二个魔术的操作内容如下。

  1. 任取 4 4 4 张牌,打乱顺序。
  2. 4 4 4 张牌撕开,变成 8 8 8 个小张,按同一个方向放置。放置之后得到 8 8 8 个小张组成的牌叠,上面 4 4 4 张为 4 4 4 张牌的上半部分,下面 4 4 4 张为 4 4 4 张牌的下半部分,且上面 4 4 4 张与下面 4 4 4 张的相对顺序相同。
  3. 根据每个人的姓名字数 x x x,每次将牌叠最上面的牌放到最下面,重复 x x x 次该操作。
  4. 拿起牌叠最上面的 3 3 3 张牌,插进牌叠的中间任意位置。
  5. 拿起牌叠最上面的 1 1 1 张牌,藏在其他地方。
  6. 拿起牌叠最上面的 1 1 1 3 3 3 张牌,插进牌叠的中间任意位置。具体数量为:南方人拿 1 1 1 张,北方人拿 2 2 2 张,不确定者拿 3 3 3 张。
  7. 拿起牌叠最上面的 1 1 1 2 2 2 张牌,丢弃。具体数量为:男生拿 1 1 1 张,女生拿 2 2 2 张。
  8. 每次将牌叠最上面的牌放到最下面,重复 7 7 7 次该操作。
  9. 每次将牌叠最上面的牌放到最下面,然后把牌叠最上面的牌丢弃,直到剩下 1 1 1 张牌。由于第 7 7 7 步男生丢弃的牌比女生少 1 1 1 张,因此第 9 9 9 步男生需要多执行 1 1 1 次操作。
  10. 剩余的 1 1 1 张牌与第 5 5 5 步藏起的牌匹配。

魔术分析

4 4 4 张牌分别记为 A \text{A} A B \text{B} B C \text{C} C D \text{D} D,撕开后 A \text{A} A B \text{B} B C \text{C} C D \text{D} D 各有 2 2 2 张。经过前 2 2 2 步操作之后,牌叠顺序是 ABCDABCD \text{ABCDABCD} ABCDABCD,满足同一张牌的 2 2 2 个半张在牌叠中的距离为 4 4 4。本文中,牌叠顺序都是从上到下的顺序。

3 3 3 步操作后的牌叠顺序取决于 x x x 除以 4 4 4 的余数,具体如下。

  • x x x 除以 4 4 4 0 0 0 时,第 3 3 3 步操作后的牌叠顺序是 ABCDABCD \text{ABCDABCD} ABCDABCD

  • x x x 除以 4 4 4 1 1 1 时,第 3 3 3 步操作后的牌叠顺序是 BCDABCDA \text{BCDABCDA} BCDABCDA

  • x x x 除以 4 4 4 2 2 2 时,第 3 3 3 步操作后的牌叠顺序是 CDABCDAB \text{CDABCDAB} CDABCDAB

  • x x x 除以 4 4 4 3 3 3 时,第 3 3 3 步操作后的牌叠顺序是 DABCDABC \text{DABCDABC} DABCDABC

虽然可能有 4 4 4 种不同的牌叠顺序,但是都满足同一张牌的 2 2 2 个半张在牌叠中的距离为 4 4 4。以下考虑第 3 3 3 步操作后的牌叠顺序为 ABCDABCD \text{ABCDABCD} ABCDABCD 的情况,对于其他牌叠顺序的情况也适用。

4 4 4 步操作之后,牌叠最上面的牌与最下面的牌都是 D \text{D} D,中间的牌的顺序是任意的。

5 5 5 步操作将牌叠最上面的牌藏在其他地方,藏起的牌是 D \text{D} D。第 5 5 5 步操作之后,牌叠还有 7 7 7 张牌。

6 6 6 步操作会改变牌叠的上面 6 6 6 张牌的顺序,牌叠最下面的牌仍是 D \text{D} D。第 6 6 6 步操作之后,将牌叠顺序记为 EFGHIJD \text{EFGHIJD} EFGHIJD

7 7 7 步操作将牌叠最上面的 1 1 1 2 2 2 张牌丢弃,男生丢弃 1 1 1 张牌,女生丢弃 2 2 2 张牌。第 7 7 7 步操作之后,男生的牌叠还有 6 6 6 张牌,牌叠顺序是 FGHIJD \text{FGHIJD} FGHIJD,女生的牌叠还有 5 5 5 张牌,牌叠顺序是 GHIJD \text{GHIJD} GHIJD

8 8 8 步操作将牌叠最上面的 7 7 7 张牌放到最下面。第 8 8 8 步操作之后,男生的牌叠顺序是 GHIJDF \text{GHIJDF} GHIJDF,女生的牌叠顺序是 IJDGH \text{IJDGH} IJDGH

9 9 9 步操作时,男生需要丢弃 5 5 5 张牌,女生需要丢弃 4 4 4 张牌。男生和女生的每次操作之后的牌叠顺序变化如下。

  • 男生: GHIJDF → HIJDFG → IJDFG → JDFGI → DFGI → FGID → GID → IDG → DG → GD → D \text{GHIJDF} \rightarrow \text{HIJDFG} \rightarrow \text{IJDFG} \rightarrow \text{JDFGI} \rightarrow \text{DFGI} \rightarrow \text{FGID} \rightarrow \text{GID} \rightarrow \text{IDG} \rightarrow \text{DG} \rightarrow \text{GD} \rightarrow \text{D} GHIJDFHIJDFGIJDFGJDFGIDFGIFGIDGIDIDGDGGDD

  • 女生: IJDGH → JDGHI → DGHI → GHID → HID → IDH → DH → HD → D \text{IJDGH} \rightarrow \text{JDGHI} \rightarrow \text{DGHI} \rightarrow \text{GHID} \rightarrow \text{HID} \rightarrow \text{IDH} \rightarrow \text{DH} \rightarrow \text{HD} \rightarrow \text{D} IJDGHJDGHIDGHIGHIDHIDIDHDHHDD

9 9 9 步操作之后,剩余的 1 1 1 张牌是 D \text{D} D,与第 5 5 5 步藏起的牌匹配。

整个魔术过程中,关键的操作有第 4 4 4 步操作、第 5 5 5 步操作、第 7 7 7 步操作、第 8 8 8 步操作和第 9 9 9 步操作,关键操作决定了待匹配的牌 D \text{D} D 的位置与剩余牌的数量。

推广到约瑟夫问题

约瑟夫问题与求解

魔术的第 9 9 9 步操作可以推广到一般形式:有 n n n 张牌围成一个圆圈,按顺时针顺序的编号依次是 1 1 1 n n n,从编号 1 1 1 的牌开始,每次向顺时针方向数 k k k 张牌并将第 k k k 张牌丢弃,直到最后只剩余 1 1 1 张牌,需要计算剩余的牌的编号。该问题为经典的约瑟夫问题。

约瑟夫问题的解法有多种。最简单的解法是模拟,时间复杂度是 O ( n k ) O(nk) O(nk),空间复杂度是 O ( n ) O(n) O(n)。更优的解法是数学解法,时间复杂度是 O ( n ) O(n) O(n),数学解法可以使用递归或迭代实现,递归实现的空间复杂度是 O ( n ) O(n) O(n),迭代实现的空间复杂度是 O ( 1 ) O(1) O(1)

f ( n , k ) f(n, k) f(n,k) 表示约瑟夫问题的解。可以使用递归的方式计算 f ( n , k ) f(n, k) f(n,k)

递归的基准情形是 n = 1 n = 1 n=1,此时圆圈中只有 1 1 1 张编号是 1 1 1 的牌,因此 f ( 1 , k ) = 1 f(1, k) = 1 f(1,k)=1

n > 1 n > 1 n>1 时,记 prevRemain = f ( n − 1 , k ) \textit{prevRemain} = f(n - 1, k) prevRemain=f(n1,k),则 prevRemain \textit{prevRemain} prevRemain n − 1 n - 1 n1 张牌中剩余的牌。如果 n n n 张牌的起始牌的编号是 1 1 1,则首张被丢弃的牌的编号是 k k k,剩余 n − 1 n - 1 n1 张牌时的起始牌的编号是 1 + k 1 + k 1+k。因此, n n n 张牌时剩余的牌的编号是 prevRemain \textit{prevRemain} prevRemain 按顺时针方向数 k k k 位。

由于牌的编号范围是 [ 1 , n ] [1, n] [1,n],因此 f ( n , k ) = ( prevRemain + k − 1 ) m o d n + 1 f(n, k) = (\textit{prevRemain} + k - 1) \bmod n + 1 f(n,k)=(prevRemain+k1)modn+1

迭代实现根据递归实现得到。用 winner \textit{winner} winner 表示剩余的牌的编号,初始时 winner = 1 \textit{winner} = 1 winner=1。对于 2 ≤ i ≤ n 2 \le i \le n 2in,从小到大遍历每个 i i i,并将 winner \textit{winner} winner 的值更新为 ( winner + k − 1 ) m o d i + 1 (\textit{winner} + k - 1) \bmod i + 1 (winner+k1)modi+1。遍历结束时, winner \textit{winner} winner 即为 n n n 张牌时剩余的牌的编号。

代码实现

下面的代码为数学解法的递归实现。

class Solution {public int findRemainCard(int n, int k) {if (n == 1) {return 1;}int prevRemain = findRemainCard(n - 1, k);return (prevRemain + k - 1) % n + 1;}
}

下面的代码为数学解法的迭代实现。

class Solution {public int findRemainCard(int n, int k) {int remain = 1;for (int i = 2; i <= n; i++) {remain = (remain + k - 1) % i + 1;}return remain;}
}

这篇关于魔术《守岁共此时》揭秘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/697871

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

揭秘世界上那些同时横跨两大洲的国家

我们在《世界人口过亿的一级行政区分布》盘点全球是那些人口过亿的一级行政区。 现在我们介绍五个横跨两州的国家,并整理七大洲和这些国家的KML矢量数据分析分享给大家,如果你需要这些数据,请在文末查看领取方式。 世界上横跨两大洲的国家 地球被分为七个大洲分别是亚洲、欧洲、北美洲、南美洲、非洲、大洋洲和南极洲。 七大洲示意图 其中,南极洲是无人居住的大陆,而其他六个大洲则孕育了众多国家和

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

无线领夹麦克风什么牌子好用?揭秘领夹麦克风哪个牌子音质好!

随着短视频行业的星期,围绕着直播和视频拍摄的电子数码类产品也迎来了热销不减的高增长,其中除了数码相机外,最为重要的麦克风也得到了日益增长的高需求,尤其是无线领夹麦克风,近几年可谓是异常火爆。别看小小的一对无线麦克风,它对于视频拍摄的音质起到了极为关键的作用。 不过目前市面上的麦克风品牌种类多到让人眼花缭乱,盲目挑选的话容易踩雷,那么无线领夹麦克风什么牌子好用?今天就给大家推荐几款音质好的

负债不再是障碍?银行信贷“白名单“揭秘

谈及银行信贷产品,常闻有言称存在无需考量负债与查询记录之奇品,此等说法十有八九为中介诱人上钩之辞。轻信之下,恐将步入连环陷阱。除非个人资质出类拔萃,如就职于国央企或事业单位,工龄逾年,五险一金完备,还款能力卓越,或能偶遇线下产品对查询记录稍显宽容,然亦非全然无视。宣称全然不顾者,纯属无稽之谈。 银行非慈善机构,不轻易于困境中援手,更偏爱锦上添花之举。若无坚实资质,即便求助于银行亦难获青睐。反

魔术方法介绍

目录 一、基本介绍 1、什么是魔术方法 2、常见的魔术方法 二、__str__ 1、基本介绍 2、应用实例:请输出Monster对象的属性信息 三、__eq__ 1、基本介绍 2、应用实例 四、其它几个魔术方法 1、其它魔术方法 2、应用实例 参考文档:3. 数据模型 — Python 3.12.5 文档 一、基本介绍 1、什么是魔术方法 1)在Pyth

移动UI:分类列表页、筛选页的设计揭秘。

移动UI的列表页设计需要考虑用户体验和界面美观性,以下是一些建议的设计要点: 1. 列表项的展示: 列表页应该清晰地展示各个列表项,包括标题、副标题、缩略图等内容,以便用户快速浏览和识别。可以使用卡片式布局或者简洁的列表布局。 2. 搜索和筛选: 如果列表项较多,应该提供搜索和筛选功能,方便用户查找感兴趣的内容。搜索框和筛选条件可以放置在页面顶部或者底部,以便用户方便操作。

黑神话悟空背后的技术揭秘与代码探秘

《重塑神话:黑神话悟空背后的技术揭秘与代码探秘》 引言 在国产游戏领域,《黑神话:悟空》无疑是一颗璀璨的明星,它不仅融合了深厚的中国文化元素,更在技术上实现了诸多突破,为玩家带来了前所未有的沉浸式体验。本文将深入剖析《黑神话:悟空》背后的关键技术,并通过代码案例展示其技术实现的魅力。 一、高精度动作捕捉技术 《黑神话:悟空》中的角色动作之所以如此逼真,得益于高精度动作捕捉技术的应用

写给大数据开发:你真的“慢“了吗?揭秘技术与职场的平衡艺术

你是否曾经在深夜里,面对着一个棘手的数据处理问题,感到无比沮丧?或者在一次重要的项目汇报中,突然语塞,无法清晰地表达你的技术方案?作为一名大数据开发者,这些场景可能再熟悉不过。但别担心,因为你并不孤单。让我们一起探讨如何在这个瞬息万变的行业中,既磨练技术利刃,又培养职场软实力。 目录 技术与时间的赛跑1. 长远视角的重要性2. 复利效应在技能学习中的应用 跨界思维:数据结构教我们的职场智

高效传输秘籍,揭秘Rsync和SCP的优劣,助你做出明智选择!

在日常的运维工作中,文件传输任务频繁出现,而选择合适的工具能显著提高工作效率。Rsync 和 SCP 是两款常见的文件传输工具,但它们各具优缺点,适合不同的场景。本文将通过深入分析这两款工具的特性、使用场景和性能,帮助你做出明智的选择,从而在文件传输中省时省力。 Rsync 与 SCP 简介 Rsync:增量传输的强大工具 Rsync 是一款支持文件同步的工具,广泛应用于备份和传输