今年春节联欢晚会中的扑克魔术到底是咋变的?

今年的刘谦给全国观众带来了俩魔术,一个是洗牌一个是撕牌,前面第一个魔术看不出来太神奇了,但是第二魔术感觉挺有趣的我可以简单分析分析。
在这里插入图片描述


然后我们列出这个魔术的关键步骤:

  1. 打乱四张牌
    1 2 3 4

  2. 对折、撕开、面向同一个方向重叠
    1 2 3 4 1 2 3 4

  3. 名字几个字久循环放几张
    4 1 2 3 4 1 2 3

  4. 拿三张牌插中间
    3 4 4 1 2 1 2 3

  5. 第一张牌藏起来
    4 4 1 2 1 2 3

  6. 南方人移动一张牌至中间;北方人移动一张牌至中间;不南不北移动三张至中间
    4 1 2 4 1 2 3

  7. 分类讨论

  8. 男生(以男生为例子,女生一样的)

    1. 扔一张
      1 2 4 1 2 3

    2. 念"见证奇迹的时刻"
      2 4 1 2 3 1

    3. “好运留下来”,每次移动一张牌至底部,然后丢掉一张牌,反复直到剩下一张牌
      2 1 2 3 1
      2 1 3 1
      2 1 3
      2 3
      3

  9. 女生

    1. 扔两张
      2 4 1 2 3

    2. 念"见证奇迹的时刻"
      1 2 3 2 4

    3. “好运留下来”,每次移动一张牌至底部,然后丢掉一张牌,反复直到剩下一张牌、
      1 2 3 2 4
      1 3 2 4
      1 3 4
      3 4
      3


以上就是全部的过程,我们可以发现魔术中虽然又名字或者是南北方或者是性别的区分,但是基本上到第四步都是一样的,在第四步的时候一定会有两张一样的牌分别在一开始还有最后,这个是因为前面无论你循环移动多少多少张牌都是按照12341234循环,然后再拿掉三张牌放中间必然前面后面是一样的牌。
把第一张牌藏起来之后,选择任意数量牌插入中间这个也不影响了,因为我们此时的目标牌是最后一张,只要数量不要太大不影响。
最后就是男生和女生的分类进行扔牌操作,其实就是一个约瑟夫环问题,把一张牌放到底部然后扔掉一张牌,那不就是约瑟夫环中的每隔一个数去掉一个数嘛,最终问题化简为找最后剩下那一张牌的位置。
男生是剩下七张牌,所以我们需要找到的位置是倒数第二个,女生剩下的牌数是六张牌,所以我们需要找到的位置是第三个。也就是说在"好运留下来"环节之前我们需要把原本的最后一张牌的位置调整到对应的位置。这里涉及到同余思想,男生需要移动到这个位置需要的次数除以6余1,女生需要移动到这个位置需要的次数除以5余2,所以最小的移动次数就是7,正好对应"见证奇迹的时刻"七个字。
那至于约瑟夫环问题如何快速知道最后那个位置在哪里呢?

问题描述:有n个人(编号从1到n)站成一个圆圈。从编号为1的人开始报数,数到m的那个人出列,然后从出列的下一个人开始重新报数,循环执行,直到所有人都出列。问题的目标是确定第i个淘汰的人编号。
思路:
1、当i较小时:ysf(int n,int m,int i):这个递归函数代表的意思为:有n个人,报到数字m时出局,求第i个人出局的编号。

y s f ( n , m , i ) = { ( y s f ( n − 1 , m , i − 1 ) + m ) % n i>1 ( M − 1 + N ) % N i=1 ysf(n,m,i) = \begin{cases} (ysf(n-1,m,i-1)+m)\%n & \text{i>1} \\ (M-1+N) \% N & \text{i=1} \end{cases} ysf(n,m,i)={(ysf(n1,m,i1)+m)%n(M1+N)%Ni>1i=1

2、当m较小时:每一次都是加k的操作,因此有很多时候这个%n很多时候都是没有用的,因此我们可以一次就将这些k都加上,以此来降低复杂度。
直接使用:

ll ysf(ll n, ll m, ll i)          //按顺序递归枚举 n表示当前剩余数量 m表示淘汰数量 k表示间隔人数
{if (i == 1) return (m - 1 + n) % n;   //只有一个的时候可以直接输出答案return (ysf(n - 1, m, i - 1) + m) % n;
}ll ysf2(ll n, ll m, ll i)
{ll ct= n - i + 1;                    //表示当前剩余个数,从小往大枚举ll val= (m - 1) % ct;                //当前淘汰位置ll dang_qian=1;                 	//已经淘汰的个数while(dang_qian < i){if(val + m >= ct + 1)             //下一个淘汰的位置已经超过本圈人数{ct++;                   //当前的总人数加一val= (val + m) % ct;         //计算新的一圈起点dang_qian++;            //计算当前淘汰的人数continue;}ll x=(ct-val-1)/(m - 1);      //计算本圈可以淘汰多少人x=min(x, i - dang_qian);      //如果本圈淘汰的人已经足够了取m-dang_qiandang_qian+=x;               //计算当前已经淘汰的人数val= val + m * x;                //计算当前淘汰的位置ct+=x;                      //计算当前剩余的人数}return val;
}void solve()
{ll n,m,k;read(n);				//输入read(m);read(k);if(k==1){printf("%lld\n",m);return ;}if(m<=(ll)1e6)printf("%lld\n",ysfdg(n,k,m)+1);     //直接按顺序枚举else    printf("%lld\n",ysf2(n,k,m)+1);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/463015.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么把视频音乐提取成mp3?分享详细工具和方法!

在数字媒体时代&#xff0c;音乐已经成为我们生活中不可或缺的一部分。有时候&#xff0c;我们会在社交媒体、视频分享网站或在线视频平台上看到一些非常喜欢的视频音乐&#xff0c;想要将其保存为MP3格式以便随时随地聆听。那么&#xff0c;如何从视频中提取音乐并转换为MP3格…

SolidWorks学习笔记——入门知识2

目录 建出第一个模型 1、建立草图 2、选取中心线 3、草图绘制 4、拉伸 特征的显示与隐藏 改变特征名称 5、外观 6、渲染 建出第一个模型 1、建立草图 图1 建立草图 按需要选择基准面。 2、选取中心线 图2 选取中心线 3、草图绘制 以对称图形举例&#xff0c;先画出…

Java异常的处理 try-catch-finally

目录 什么是异常通过if-else处理异常用if-else堵漏洞的缺点 try-catch例第一种处理第二种处理第三种处理第四种处理 try-catch-finally例 System.exit(0);//终止当前的虚拟机执行 什么是异常 Exception&#xff1a;在程序的运行过程中&#xff0c;发生了不正常的现象&#xff0…

PWM输入输出

PWM&#xff08;Pulse Width Modulation&#xff09;即脉冲宽度调制&#xff0c;在具有惯性的系统中&#xff0c;可以通过对一系列脉冲的宽度进行制&#xff0c;来等效地获得所需要的模拟参量&#xff0c;常应用于电机控速、开关电源等领域。 PWM参数 PWM 中有三个重要参数&…

IOS破解软件安装教程

对于很多iOS用户而言&#xff0c;获取软件的途径显得较为单一&#xff0c;必须通过App Store进行下载安装。 这样的限制&#xff0c;时常让人羡慕安卓系统那些自由下载各类版本软件的便捷。 心中不禁生出疑问&#xff1a;难道iOS世界里&#xff0c;就不存在所谓的“破解版”软件…

子域名收集神器:Subfinder 保姆级教程(附链接)

一、介绍 Subfinder 是一款专注于子域名收集的开源工具&#xff0c;旨在帮助安全专业人员、渗透测试人员和研究人员快速有效地发现目标域的子域名。该工具通过与多个子域名源&#xff08;例如搜索引擎、DNS数据&#xff09;集成&#xff0c;提供了一个全面的子域名搜集解决方案…

ElasticSearch之倒排索引

写在前面 本文看下es的倒排索引相关内容。 1&#xff1a;正排索引和倒排索引 正排索引就是通过文档id找文档内容&#xff0c;而倒排索引就是通过文档内容找文档id&#xff0c;如下图&#xff1a; 2&#xff1a;倒排索引原理 假定我们有如下的数据&#xff1a; 为了建立倒…

阿里云游戏服务器一年费用多少?

阿里云游戏服务器租用价格表&#xff1a;4核16G服务器26元1个月、146元半年&#xff0c;游戏专业服务器8核32G配置90元一个月、271元3个月&#xff0c;阿里云服务器网aliyunfuwuqi.com分享阿里云游戏专用服务器详细配置和精准报价&#xff1a; 阿里云游戏服务器租用价格表 阿…

Android SystemConfig相关

SystemConfig在哪里初始化 它声明在PackageManagerService类的静态方法main()中。在该方法中间定义Injector类对象时&#xff0c;作为它的构造参数。它是调用的SystemConfig.getInstance()实现初始化&#xff0c;之后能通过Injector类对象的getSystemConfig()得到SystemConfig类…

探索未来:集成存储器计算(IMC)与深度神经网络(DNN)的机遇与挑战

开篇部分&#xff1a;人工智能、深度神经网络与内存计算的交汇 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;已经成为科技领域的一股强大力量&#xff0c;而深度神经网络&#xff08;DNN&#xff09;则是AI的核心引擎之一。DNN是一种模仿人类神经系统运作…

【Spring】springmvc如何处理接受http请求

目录 ​编辑 1. 背景 2. web项目和非web项目 3. 环境准备 4. 分析链路 5. 总结 1. 背景 今天开了一篇文章“SpringMVC是如何将不同的Request路由到不同Controller中的&#xff1f;”&#xff1b;看完之后突然想到&#xff0c;在请求走到mvc 之前服务是怎么知道有请求进来…

【数据分享】1901~2022中国1km逐月潜在蒸散发数据集

大家新年好啊&#xff01;今天给大伙儿分享的是1901~2022中国1km逐月潜在蒸散发数据集&#xff0c;收藏一下&#xff0c;过完年再看&#xff01;当然了&#xff0c;如果有问题的朋友&#xff0c;可以添加俺微信交流。 1 数据简介 数据集为中国逐月潜在蒸散发&#xff0c;空间分…