2024刘谦春晚第二个扑克牌魔术

前言

就是刚才看春晚感觉这个很神奇,虽然第一个咱模仿不过来,第二个全国人民这么多人,包括全场观众都有成功,这肯定是不需要什么技术,那我觉得这个肯定就是数学了,于是我就胡乱分析一通。

正文

首先准备4张扑克牌

假设4张扑克牌用a、b、c、d来表示,洗牌就是把abcd的顺序打乱,这里abcd是等价的,分别表示4个数字,这里假设他顺序就是abcd已经洗好的。

对折撕开

他撕开排列之后的顺序就变成了abcdabcd。

按照名字的字数移动

这个按照姓名的字数移动,假设姓名的个数为n,他最后需要移动其实就是n%4,这里假设对折撕开的两部分a和a是一样的,没有区别,移动4的倍数其实就等价为没有移动。

0 abcdabcd

1 bcdabcda

2 cdabcdab

3 dabcdabc ……

拿起最上面3张插入到中间

假设姓名是2个字,结果为cdabcdab,拿着三张插入到中间,之后他第一张和最后一张其实都是b了,中间的顺序不用考虑。

取最上面一张放一边

这里刚好取的就是确定的b,之后的思路就是考虑最后留下来的是最后半张扑克牌的b就行了。

按南北方,认为自己是南方人把最上面1张插入到中间,认为自己是北方人把最上面2张插入到中间,不确定的把最上面3张插入到中间

这里不管移动几张其实插入的都是中间,中间我们不需要考虑他的顺序,此时他最后半张扑克牌依旧是b。

按男女,男生丢掉最上面一张,女生丢掉最上面两张

到这里扑克牌个数又发生了改变,但是依旧没有影响最后一张扑克牌。

男生:6张

女生:5张

见证奇迹的时刻

这句话七个字。

男生移动之后,b成为倒数第二张,正数第五张

女生移动之后,b成为倒数第三张,正数也是第三张

第一张放最后,第二张丢出去,第三张放最后,第四章丢出去……

编写一个程序,要求按照这个步骤操作,最终留下来的是第几张扑克牌。

当然用链式可能会更好,但是我这里不考虑时间复杂度什么,主要是实现改功能,暂时不考虑效率。

#include<iostream>
using namespace std;int main(){int n;int i,j;cout<<"请输入扑克牌的个数:";cin>>n;int *arr=new int(n);//存入数据表示他的顺序for(i=0;i<n;i++){arr[i]=i+1;}//循环n-1次即可,每次删除一个元素for(i=n-1;i>=0;i--){//暂存第一张int tmp=arr[0];//后面的往前面移动for(j=0;j<i;j++){arr[j]=arr[j+1];}//第一张放最后arr[i]=tmp;//移除第一张for(j=0;j<i;j++){arr[j]=arr[j+1];}}cout<<"您要取的扑克牌是第 "<<arr[0]<<" 张"<<endl;return 0;
}

补:

晚上躺床上睡不着,又在想这个问题。

他不就是每轮保留奇数,删除偶数,通过一个变量来记录当前是奇数次操作还是偶数次操作,如果是奇数次操作就将这个数保留,如果是偶数次操作就把数组元素置0表示清空,之后操作n-1次之后剩下的那个数就是需要的那个。

#include<iostream>
using namespace std;int main(){int n;int i,j;int count=0;cout<<"请输入扑克牌的个数:";cin>>n;int *arr=new int(n);//存入数据表示他的顺序for(i=0;i<n;i++){arr[i]=i+1;}//删除偶数,保留奇数for(i=0;i<n-1;){//一直遍历删除,直到只留下一个元素为止for(j=0;j<n;j++){//不为0表示没有被删除if(arr[j]!=0){count++;//偶数删除if(count%2==0){arr[j]=0;i++;}}}	}for(i=0;i<n;i++){//不为0表示还没被删除if(arr[i]!=0){cout<<"您要取的扑克牌是第 "<<arr[i]<<" 张"<<endl;}}return 0;
}

 

总结

不知道这个思路是否正确,如果有错误,还希望各位大佬能够批评指正。 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql Day04

mysql体系结构 连接层服务层引擎层&#xff08;索引&#xff09;存储层 存储引擎 存储引擎是基于表建立的&#xff0c;默认是innoDB show create table tb; 查看当前数据库支持的存储引擎 show engines; InnoDB 特点 DML&#xff08;数据增删改&#xff09;遵循ACID模…

MongoDB的分片集群(二) :mongodb4.x分片集群离线搭建开启安全认证

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 相关文章&#xff1a; MongoDB的分片集群(一) : 基础知识 在《MongoDB的分片集群(一) : 基础知识》中梳理了分片集群的基础知识…

opencv计算机视觉

树莓派主机的无键盘解决 进入控制面板&#xff0c;更改适配器设置&#xff0c;WIFI属性&#xff0c;勾选 1.将网线两头分别接入树莓派和笔记本的网线接口 2.在无线连接属性那里勾选允许其他用户连接 3.运行cmd使用arp -a查看树莓派ip地址&#xff0c;或者使用ipscanner查看 cmd…

JavaIO读取C101.txt文件

一、split分割带空格的字符串&#xff08;四种方法及其区别&#xff09; 参考&#xff1a;https://blog.csdn.net/yezonghui/article/details/106455940 String str "a b c d";String[] arr1 str.split(" "); //仅分割一个空格 String[] arr2 str…

c++之说_11|自定义类型 enum(枚举)与enumclass (c11新枚举)

至于枚举 会用就行 至少目前我感觉没什么太多问题 enum 被称为无作用域枚举 &#xff0c; enumclass / enumstruct 被称为有作用域枚举 看到了吧 语法规则 和 struct 差不多 只不过枚举成员 只是一个标志 它本质是数值 从上到下 下面的数根据上面的数 加 1 也可以直接…

前端JavaScript篇之对闭包的理解

目录 对闭包的理解用途循环中使用闭包解决 var 定义函数的问题 对闭包的理解 闭包是指一个函数能够访问并操作其词法作用域&#xff08;定义时所在的作用域&#xff09;之外的变量的能力。它可以通过在一个函数内部创建另一个函数来实现。内部函数可以访问外部函数的局部变量、…

【维生素C语言】附录:strlen 函数详解

写在前面&#xff1a;本篇将专门为 strlen 函数进行讲解&#xff0c;总结了模拟实现 strlen 函数的三种方法&#xff0c;并对其进行详细的解析。手写库函数是较为常见的面试题&#xff0c;希望通过本篇博客能够加深大家对 strlen 的理解。 0x00 strlen函数介绍 【百度百科】str…

Cobalt Strike 的使用及拓展

Cobalt Strike是一款以Metasploit为基础的GUI框架式渗透测试工具&#xff0c;集成了端 口转发、服务扫描、 自动化溢出、多模式端口监听、exe 、PowerShell木马生成 等&#xff0c;主要用于团队作战&#xff0c;能让多个渗透者同时连接到团体服务器上&#xff0c;共享渗透资 源…

Leetcode2560. 打家劫舍 IV

Every day a Leetcode 题目来源&#xff1a;2560. 打家劫舍 IV 解法1&#xff1a;二分答案 动态规划 给定数组 nums&#xff0c;从中选择一个长度至少为 k 的子序列 A&#xff0c;要求 A 中没有任何元素在 nums 中是相邻的。 最小化 max⁡(A)。 看到「最大化最小值」或者…

基于vue+node.js的校园跳蚤市场系统多商家

校园跳蚤市场系统可以在短时间内完成大量的数据处理、帮助用户快速的查找校园跳蚤市场相关信息&#xff0c;实现的效益更加直观。校园跳蚤市场系统中采用nodejs技术和mysql数据库。主要包括管理员、发布者和用户三大部分&#xff0c;主要功能是实现对个人中心、用户管理、发布者…

数据分析基础之《pandas(7)—高级处理2》

四、合并 如果数据由多张表组成&#xff0c;那么有时候需要将不同的内容合并在一起分析 1、先回忆下numpy中如何合并 水平拼接 np.hstack() 竖直拼接 np.vstack() 两个都能实现 np.concatenate((a, b), axis) 2、pd.concat([data1, data2], axis1) 按照行或者列…

【Opencv学习】04-图像加法

文章目录 前言一、图像加法混合1.1 代码1.2 运行结果 二、图像的按位运算-组合相加2.1 代码2.2 运行结果示例&#xff1a;PPT平滑切换运行结果 总结 前言 简单说就是介绍了两张图如何组合在一起。 1、混合&#xff0c;透明度和颜色会发生改变 2、组合&#xff0c;叠加起来。可…

大厂的供应链域数据中台设计

关注我&#xff0c;紧跟本系列专栏文章&#xff0c;咱们下篇再续&#xff01; 作者简介&#xff1a;魔都技术专家兼架构&#xff0c;多家大厂后端一线研发经验&#xff0c;各大技术社区头部专家博主&#xff0c;编程严选网创始人。具有丰富的引领团队经验&#xff0c;深厚业务架…

2/10 BFS初探

其实在我看来解决全排列问题&#xff0c;核心还是顺序&#xff0c;想清楚结束条件&#xff0c;然后输出&#xff0c;以n3为例 #include<iostream> using namespace std; const int N 10; int path[N];//保存序列 int state[N];//数字是否被用过 int n; void dfs(int u) …

FPGA_工程_基于rom的vga显示

一 框图 二 代码修改 module Display #(parameter H_DISP 1280,parameter V_DISP 1024,parameter H_lcd 12d150,parameter V_lcd 12d150,parameter LCD_SIZE 15d10_000 ) ( input wire clk, input wire rst_n, input wire [11:0] lcd_xpos, //lcd horizontal coo…

C++面向对象 Part 2

文章目录 类六个默认存在的成员函数构造函数&#xff1a;析构函数&#xff1a;拷贝构造函数:拷贝构造详解及细节&#xff1a; 赋值运算符重载;取地址及const取地址操作符重载const修饰的含义&#xff1a; 类六个默认存在的成员函数 构造函数 析构函数 拷贝构造函数 赋值运算…

【从Python基础到深度学习】3. Winscp与Ubuntu使用及配置

一、Ubuntu的使用 1.1 开启与关闭 1.2 修改Ubuntu分辨率 选择适合自己电脑大小的分辨率 1.3 Ubuntu终端 1.4 网络测试 终端中输入&#xff1a; ping www.baidu.com ctr C 退出ping命令 1.5 下载软件 连通安装源 sudo apt update 安装 ssh vim sudo apt install ss…

Verilog刷题笔记22

题目&#xff1a; Build a priority encoder for 8-bit inputs. Given an 8-bit vector, the output should report the first (least significant) bit in the vector that is 1. Report zero if the input vector has no bits that are high. For example, the input 8’b100…

使用耳机壳UV树脂制作一个耳机壳需要多长时间?

使用耳机壳UV树脂制作一个耳机壳所需的时间取决于多个因素&#xff0c;包括工艺流程、加工方式、设备和技术水平等。一般来说&#xff0c;制作一个耳机壳需要数小时到数天不等。 以下是影响制作时间的几个主要因素&#xff1a; 获取耳模时间&#xff1a;获取耳模的时间取决于…

爬虫2—用爬虫爬取壁纸(想爬多少张爬多少张)

先看效果图&#xff1a; 我这个是爬了三页的壁纸60张。 上代码了。 import requests import re import os from bs4 import BeautifulSoupcount0 img_path "./壁纸图片/"#指定保存地址 if not os.path.exists(img_path):os.mkdir(img_path) headers{ "User-Ag…