2024年刘谦魔术大揭秘,其中竟用到了约瑟夫环?

文章揭示了春晚魔术表演中的技巧,通过步步揭秘,发现整个魔术利用了障眼法和数学原理(约瑟夫问题),展示了看似神奇的过程其实包含逻辑和计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

魔术过程

揭秘过程

结尾


前言

不知道昨天春晚时刘谦的魔术大家看了没有,相信大家跟我一样也很疑惑,所以爆肝一天我得出了结论。如果你觉得还不错的话,记得点赞收藏,分享给更多的朋友看。

魔术过程

整个魔术可以分成十步,你可以学一学变给同学看,他们一定会震惊十万年的。

1.任意选四张牌,并把牌洗混。

2.把扑克牌对折后撕开,让一堆放在另一堆上面,合并成8张牌。

3.名字有几个字就把扑克牌从上面往下挪动几张。

4.拿出最上面的三张牌,插入剩下牌的中间(位置随意)。

5.把最上面的牌拿走放在口袋里。

6.按照南北方人拿出不同的数量插入中间(南1北2不知道3)。

7.按性别分别丢弃最上面的牌(男1女2)。

8.嘴里喊出“见证奇迹的时刻”,每喊一个字,把一张牌从上面拿到最下面。

9.“好运留下来,烦恼丢出去”,当喊出“好运留下来”时,把最上面的牌拿到最底下;当喊出“烦恼丢出去”时,把最上面的牌丢出去(扔掉),重复步骤知道剩余一张牌。

10.如果你步骤正确的话,剩余的半张牌和放在口袋里的半张牌会正好拼成一张牌。

揭秘过程

我们逐个步骤来看。

1.任意选四张牌,并把牌洗混。

表面上看是每个人都不一样,很随机,但是你忽略了一点,他最终不是猜你的牌,而是让你手中的两张牌配对起来,所以再怎么打乱,人人都一样,属障眼法

2.把扑克牌对折后撕开,让一堆放在另一堆上面,合并成8张牌。

我们把这8张牌设为:ABCD abcd

一堆放在另一堆上面,并没有改变ABCD的顺序。

进一步观察,发现任意两张配对的牌之间都间隔3张牌。

3.名字有几个字就把扑克牌从上面往下挪动几张。

表面上看是把牌堆又弄乱了,但你仔细想一想,不管你移动多少张,两张配对的牌始终间隔3张牌。如下面的例子:

张三:ABCDabcd→CDabcdAB

王小明:ABCDabcd→DabcdABC

所以这一步属于障眼法

4.拿出最上面的三张牌,插入剩下牌的中间(位置随意)。

这一步非常关键,观察牌堆,如果我们把上面三张插入中间,顶牌和底牌已经配对了。

张三:ABCDabcd→CDabcdAB→bCDacdAB(不管怎样插,头尾都会配对)

王小明:ABCDabcd→DabcdABC→cdDabABC

5.把最上面的牌拿走放在口袋里。

这一步把顶牌拿走,也就是说此时此刻需要配对的牌是底牌。

6.按照南北方人拿出不同的数量插入中间(南1北2不知道3)。

你插来插去,底牌还是没有变,属于障眼法

7.按性别分别丢弃最上面的牌(男1女2)。

你丢来丢去,底牌还是没有变,属于障眼法

8.嘴里喊出“见证奇迹的时刻”,每喊一个字,把一张牌从上面拿到最下面。

这一步需要模拟一下,因为底牌顺序完全改变了。

张三(BOY):ABCDabcd→CDabcdAB→bCDacdAB→DacdAB→acdABD

王小明(GRIL):ABCDabcd→DabcdABC→cdDabABC→abABC→ABCab

9.“好运留下来,烦恼丢出去”,当喊出“好运留下来”时,把最上面的牌拿到最底下;当喊出“烦恼丢出去”时,把最上面的牌丢出去(扔掉),重复步骤知道剩余一张牌。

重中之重,约瑟夫问题!

我们可以写一个程序来验证一下,有几张牌相当于有几个人报数,报2淘汰。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int a[n+1]={0};
	for(int i=1;i<=n;i++) a[i]=i; 
	int num=n;//num为剩余人数 
	int count=1;//count为当前要报的数字 
	int tmp=0;//tmp为当前该哪个位置报数了 
	int l=1;//l表示当前是第几轮 
	while(num!=0)	
	{
		tmp++;
		if(tmp>n) tmp=1;
		if(a[tmp]!=-1)
		{
			if(count==2)
			{
				cout<<a[tmp]<<" ";
				a[tmp]=-1;
				num--; 
				count=0;
			}
			count++;
		}
	}
	return 0;
}

张三:

出圈顺序:2 4 6 3 1 5

5对应字符串“acdABD”里的B。

王小明:
出圈顺序:2 4 1 5 3

3对应字符串“ABCab”里的C。

这一步多理解理解,魔术精髓就在这。

10.如果你步骤正确的话,剩余的半张牌和放在口袋里的半张牌会正好拼成一张牌。

神奇是神奇,但是被我揭穿了,哈哈哈。

结尾

怎么样,你学会了吗?制作不易,希望点个赞评个论再走。

我看了看写满了的草稿纸,你确定不点个关注吗?

我是爱证明的小芒果,我们下次再见,Happy Chinese New Year!

标题SpringBoot基层智能化人员调度系统研究AI更换标题第1章引言介绍SpringBoot基层智能化人员调度系统的研究背景、意义、现状以及论文的研究方法和创新点。1.1研究背景与意义分析当前基层人员调度的现状和问题,阐述智能化调度的必要性和意义。1.2国内外研究现状概述国内外在基层智能化人员调度系统方面的研究进展和应用情况。1.3论文方法及创新点介绍本文采用的研究方法和实现智能化人员调度系统的创新点。第2章相关理论阐述SpringBoot框架、智能化调度算法和人员调度理论。2.1SpringBoot框架概述介绍SpringBoot框架的特点、优势和应用场景。2.2智能化调度算法总结现有的智能化调度算法,并分析其优缺点。2.3人员调度理论基础阐述人员调度的基本概念、原则和方法。第3章系统需求分析对SpringBoot基层智能化人员调度系统进行需求分析,包括功能性需求和非功能性需求。3.1功能性需求明确系统需要实现的功能,如人员信息管理、任务分配、调度策略制定等。3.2非功能性需求分析系统的性能、安全性、可靠性等非功能性需求。3.3需求优先级划分根据实际需求,对各项需求进行优先级划分。第4章系统设计详细介绍SpringBoot基层智能化人员调度系统的设计方案,包括架构设计、数据库设计和界面设计。4.1架构设计给出系统的整体架构,包括前后端分离、微服务架构等设计理念。4.2数据库设计设计合理的数据库表结构,满足系统的数据存储和查询需求。4.3界面设计设计简洁、易用的用户界面,提升用户体验。第5章系统实现阐述SpringBoot基层智能化人员调度系统的具体实现过程,包括核心代码实现、功能模块实现等。5.1核心代码实现详细介绍系统核心功能的代码实现,如人员信息管理、任务分配算法等。5.2功能模块实现分别介绍各个功能模块的实现过程,如用户登录、人员信息管理、任务管理等。第6章系统
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的小芒果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值