春晚魔术和约瑟夫问题

春晚的魔术实际上是一个约瑟夫问题,最终的结果是魔术开始时确定的几个变量确定好的,扑克牌只是道具和障眼法。网上一查这个问题发现颇有历史渊源,17世纪的法国数学家加斯帕在《数目的游戏问题》中讲了这样一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。

编程实现这个过程:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(void)
{
	int n, m, i, kill = 0, t = 0, s = 0;

	scanf("%d %d", &n, &m);
	printf("%s line %d, total object %d, kill every %d object.\n",
	       __func__, __LINE__, n, m);

	// the first object are reserved, the first index start from
	// 1, end to n.
	bool *array = malloc(sizeof(bool) * (n + 1));
	if (array == NULL) {
		printf("%s line %d, alloc object buffer failure.\n",
		       __func__, __LINE__);
		return -1;
	}

	for (i = 0; i < (n+1); i ++) {
		array[i] = false;
	}

	do {
		++t;
		if (t > n)
			t = 1; 
		if (!array[t])
			s++;
		if (s == m) {
			s = 0;
			printf("%d ", t);

			// kill this object.
			array[t] = true;
			kill++;
		}
	} while (kill != n); // all has been killed.

	printf("kill %d object.\n", kill);
	free(array);

	return 0;
}

可见杀戮顺序是9 18 27 6 16 26 7 19 30 12 24 8 22 5 23 11 29 17 10 2 28 25 1 4 15 13 14 3 20 21,所以只要保证9 18 27 6 16 26 7 19 30 12 24 8 22 5 23位置上的人都是非教徒,则15名教徒能够全部存活下来。

所以,只要把非教徒安排在5,6,7,8,9,12,16,18,19,22,23,24,26,27,30位置上,能够达到仅杀死非教徒的目的。

参考文章

约瑟夫环问题(链表 + 公式)-CSDN博客


结束

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 遍历文档生成目录结构

JavaScript 遍历文档生成目录结构 要遍历 HTML 文档并生成目录结构&#xff0c;你可以使用 JavaScript 来进行 DOM 操作和遍历。以下是一个简单的示例代码&#xff0c;演示了如何遍历文档中的标题元素&#xff08;例如 <h1>、<h2>、<h3> 等&#xff09;&…

2024.02.11作业

1.请使用递归实现n! #include <stdio.h> #include <stdlib.h> #include <string.h>int func(int n) {if (n 1){return 1;}return func(n - 1) * n; }int main() {int n 5;printf("%d\n", func(5));return 0; } 2.请使用递归实现0-n的和 #inclu…

《21天精通IPv4 to IPv6》第0天:IPv4至IPv6的必要性与互联网IP资源发展趋势浅谈

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Java常用类与基础API--String的实例化与连接操作

文章目录 一、String实例化的两种方式&#xff08;1&#xff09;两种方式&#xff08;2&#xff09;举例1、案例12、案例2 &#xff08;3&#xff09;内存分配&#xff08;4&#xff09;面试题1、题12、题2 二、String的连接操作&#xff08;1&#xff09;案例1、案例剖析2、in…

C++: const 的 权限放大缩小!

目录 概念 引用与const 关于上述的第一段代码&#xff1a; 关于上诉的第二段代码&#xff1a; const 使用指针进行权限的放大和缩小&#xff1a; 注意事项&#xff1a; const 与 成员函数 const 修饰 成员函数的规则&#xff1a; 概念 关于权限的放大和缩小问题&am…

【C++】【类和对象】拷贝构造函数

1.拷贝构造函数的特性&#xff1a; 1.拷贝构造函数用来构造一个与已存在对象一摸一样的对象 它只有单个形参&#xff0c;该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c;在用已存在的类类型对象创建新对象时由编译器自动调用。 2.拷贝构造函数是构造函数的一种重…

gcore服务器设置root账号密码登录

这个厂商很奇怪&#xff0c;默认只能用centos用户与公钥登录&#xff0c;但是这样有时候很麻烦。 他默认开启了SELinux&#xff0c;和强制ssh密钥登录。 下面所有操作在root模式下进行 SELinux设置为兼容模式 setenforce 0vi /etc/selinux/config然后将文件中的SELINUXenfo…

分享88个表单按钮JS特效,总有一款适合您

分享88个表单按钮JS特效&#xff0c;总有一款适合您 88个表单按钮JS特效下载链接&#xff1a;https://pan.baidu.com/s/1v-qcl8bv2kxZ8a98Xo9UAg?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…

滑动小短剧影视微信小程序源码/带支付收益等模式

仿抖音滑动小短剧影视微信小程序源码&#xff0c;带支付收益等模式、支持无限滑动&#xff1b;高性能滑动、预加载、视频预览&#xff0c;支持剧情介绍&#xff0c;集合壁纸另外仿抖音滑动效果&#xff1b;支持会员模式&#xff0c;支持用户单独购买等等多功能。 丰富的后台设…

备战蓝桥杯---数学基础3

本专题主要围绕同余来讲&#xff1a; 下面介绍一下基本概念与定理&#xff1a; 下面给出解这方程的一个例子&#xff1a; 下面是用代码实现扩展欧几里得算法&#xff1a; #include<bits/stdc.h> using namespace std; int gcd(int a,int b,int &x,int &y){if(b…

极狐GitLab 使用阿里云作为 OmniAuth 身份验证 provider

使用阿里云作为 OmniAuth 身份验证 provider 您可以启用阿里云 OAuth 2.0 OmniAuth provider并使用您的阿里云账户登录极狐GitLab。 创建阿里云应用 登录阿里云平台&#xff0c;在上面创建一个应用。阿里云会生成一个 client ID and secret key 供您使用。 登录到阿里云平台…

STM32Cubmax AD采集

一、基本概念 二、项目 AD函数结构体 typedef struct { uint32_t Mode; // ADC 工作模式选择 FunctionalState ScanConvMode; /* ADC 扫描&#xff08;多通道&#xff09; 或者单次&#xff08;单通道&#xff09;模式选择 */ FunctionalState ContinuousConvMode; // ADC 单…

【JavaEE】_HTML常用标签

目录 1.HTML结构 2. HTML常用标签 2.1 注释标签 2.2 标题标签&#xff1a;h1~h6 2.3 段落标签&#xff1a;p 2.4 换行标签&#xff1a;br 2.5 格式化标签 2.6 图片标签&#xff1a;img 2.7 超链接标签&#xff1a;a 2.8 表格标签 2.9 列表标签 2.10 表单标签 2.10…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 2月11日,星期日

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年2月11日 星期日 农历正月初二 1、 2024年总台春晚传播数据创下新纪录&#xff1a;全媒体累计触达267亿次&#xff0c;较去年增长29%。 2、 交通运输部&#xff1a;除夕全社会跨区域人员流动量超1.9亿人次。 3、 微信&am…

Backtrader 文档学习- Sizers

Backtrader 文档学习- Sizers 1.概述 智能仓位 Strategy提供了交易方法&#xff0c;即&#xff1a;buy&#xff0c;sell和close。看一下buy的定义&#xff1a; def buy(self, dataNone,sizeNone, priceNone, plimitNone,exectypeNone, validNone, tradeid0, **kwargs):注意&…

电子电器架构 —— 区域控制器是未来架构的正解吗?

电子电器架构 —— 区域控制器是未来架构的正解吗? 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶…

猫头虎分享已解决Bug || Go Error: panic: runtime error: index out of range

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【PTA|期末复习|编程题】数组相关编程题(一)

目录 7-1 乘法口诀数列 (20分) 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 样例解释&#xff1a; 代码 7-2 矩阵列平移(20分) 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; …

JavaScript的聚焦:focus/blur

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ​ ✨ 正文 一、简介 focus 和 blur 事件是 HTML 元素的重要事件&#xff…

4、解构三个重要的Pipeline(SD-Inpainting, ControlNet, AnimateDiff) [代码级手把手解析diffusers库]

上一篇我们解析了所有Pipeline的基类DiffusionPipeline。后续各种各样的pipeline都继承了DiffusionPipeline的模型加载保存等功能,然后再配合各个组件实现各种的结构即可。 事实上,一个Pipeline通常包含了如下模块(from_pretrained函数根据model_index.json文件new了一个Pipe…