当前位置: 首页 > article >正文

约瑟夫环(代码+公式推导)

题目描述个人的编号是 1 ~ 如果他们依编号按顺时针排成一个圆圈从编号是 1 的人开始顺时针报数。报数是从 1 报起当报到 的时候这个人就退出游戏圈。下一个人重新从 1 开始报数。求最后剩下的人的编号。传统的暴力写法时间复杂度On²数据超过5×10⁵就很难通过#includebits/stdc.h using namespace std; int main() { int n, k; cin n k; vectorint s; for(int i 1; i n; i) s.push_back(i); int idx 0; // 从第0个位置开始 while(s.size() ! 1) { // 计算要删除的位置(当前位置 k - 1) % 当前大小 idx (idx k - 1) % s.size(); s.erase(s.begin() idx); // 删除后idx 自动指向下一位置因为后面的元素前移了 } cout s[0] endl; return 0;因此将使用时间复杂度为O(n)的公式法来解决超时问题公式法代码先给代码#includebits/stdc.h using namespace std; int main() { int n,k; cin nk; int ans0; for(int i2;in;i) { ans(ansk)%i; } cout ans1; return 0; }公式法举例验证法推理假设n5k3编号调整为1~n以下出现的名词解释虚拟位置 每轮重新编排的临时座位号本轮虚拟编号0, 1, 2, ...每轮重新编排原始编号实际剩余的编号上轮虚拟位置该原始编号在上轮中的虚拟位置初始情况虚拟编号 0 1 2 3 4原始编号 1 2 3 4 5经过第一轮筛选编号3 OUT~从编号4继续重新开始数本轮虚拟编号 0 1 2 3原始编号 4 5 1 2上轮虚拟位置 3 4 0 1经过第二轮筛选编号1 OUT~从编号2继续重新开始数本轮虚拟编号 0 1 2原始编号 2 4 5上轮虚拟位置 3 0 1经过第三轮筛选编号5 OUT~从编号2继续重新开始数本轮虚拟编号 0 1原始编号 2 4上轮虚拟位置 0 1经过第四轮筛选编号2 OUT~本轮虚拟编号 0原始编号 4上轮虚拟位置 1结果幸存者原始编号:4由此例引至数学归纳法以便得到递推公式公式法数学归纳法推理命题设 f(n) 为 n 个人时幸存者的虚拟位置则 f(n)(f(n−1)k) mod n基础情况当n1时只有1人虚拟位置为0f(1)0 归纳假设假设对于 n−1 个人公式成立即已知 f(n−1) 。归纳步骤n人圈第一轮虚拟位置 0 1 2 ... k-1 k ... n-1原始编号 1 2 3 ... k k1 ... n↑淘汰淘汰位置0k-1 mod n k-1剩余n-1人重新安排虚拟位置从淘汰位置的下一个即位置k1开始作为新虚拟0新虚拟位置对应旧虚拟位置映射关系0k(k0) mod n1k1(k1) mod n.........x(kx) mod n(kx) mod n应用归纳假设n-1人时幸存者在新虚拟位置 f(n−1)映射回n人圈新虚拟位置 f(n−1)对应旧虚拟位置 旧位置 (kf(n−1)) mod nn人圈的幸存者位置 f(n) (f(n−1)k) mod n公式的应用int ans0;初始化答案f(1) 0表示1个人时幸存者在虚拟位置0for(int i2;in;i)循环变量i当前计算的人数从2人到n人{ans(ansk)%i;ans由于只需要用到前一个数据f(i-1)便无需用数组存储ans即公式中的f函数表示法fi的虚拟位置}cout ans1;输出幸存者的最终编号1~nf函数表示虚拟位置虚拟位置范围0~n-1比实际位置少1故1

相关文章:

约瑟夫环(代码+公式推导)

题目描述𝑛个人的编号是 1 ~ 𝑛,如果他们依编号按顺时针排成一个圆圈,从编号是 1 的人开始顺时针报数。(报数是从 1 报起)当报到 𝑘的时候,这个人就退出游戏圈。下一个人重新从 1 开…...

图解C语言侵入式双向循环链表与 container_of 宏底层原理

一、侵入式链表 在了解侵入式链表之前,先回顾之前的非侵入式链表,形式如下: struct Node {int data; // 数据struct Node* next; };在非侵入式链表的这种设计中,拿到一个 Node,顺便也就拿到了它的 data。 …...

java从头开始-苍穹外卖-day11-数据统计与展示

营业额统计用户统计订单统计销量排名top10这个其实要多表联查,菜品是在订单详情表,但是这个表没有订单完成状态,因此需要多表连查...

别让Service层“越界”:为何Java中Service层不该直接返回Result对象?

别让Service层“越界”:为何Java中Service层不该直接返回Result对象? 引入:一次代码审查引发的思考 昨天在进行代码审查的时候,我发现同事在 Service 层直接返回了 Result 对象。当时我就指出了这个问题,可同事一脸疑惑…...

基于Spring Boot的校园二手物品置换系统设计与实践

第一章:系统设计目标与需求拆解 在高校倡导绿色低碳理念与学生闲置物品处理需求增长的背景下,基于Spring Boot的校园二手物品置换系统,核心目标是构建“以物换物”的非货币交易平台,解决传统校园二手交易中“价格博弈繁琐、闲置物…...

基于SpringBoot+Vue的旅游信息咨询网站

第一章:网站设计背景与核心定位 在旅游消费升级的趋势下,用户对旅游信息的需求从“基础查询”转向“精准化、个性化、一站式”服务,传统旅游信息平台存在信息碎片化、更新滞后、互动性弱等问题——用户需在多个平台切换查询景点、住宿、交通信…...

大学C语言搜题app推荐,助你从小白变编程大牛

不少自学C语言的同学都碰到过这般困境,看书之际觉着自己懂了,然而一敲代码便两眼一抹黑,碰到报错也不清楚如何解决。实际上,要想切实掌握这门底层语言,仅仅啃书本远远不足够,借助手机上的工具随时开展练习、…...

C语言特点及应用领域介绍,面向过程语言的相关知识

拥有50年历史的老牌编程语言C语言,直至如今在嵌入式开发领域依旧稳稳占据着霸主位置,每年毕业的程序员数量成千上万,然而真正能够把C语言运用到关键之处的却并不多。它具备简单直接的面向过程特性,在资源受到限制的单片机上面&…...

MCP、RAG与AI智能体对比图文笔记:收藏这份入门指南,轻松掌握大模型核心技术方向!

核心概念:各司其职的技术方向当前AI领域最火的三个概念(MCP、RAG、AI智能体),本质上解决的是不同层面的问题,并非互斥竞争关系。以下是它们的定位差异:技术方向核心能力解决的核心问题MCP定义LLM如何使用外…...

技术深度:模型预测控制(MPC)储能控制策略与多目标哈里斯鹰(MOHHO)算法储能容量配置研究

模型预测控制(MPC)储能控制策略 多目标哈里斯鹰(MOHHO)算法储能容量配置 matlab 研究内容:控制策略为双层控制模型,上层储能补偿风电预测误差,下层储能利用MPC平抑风电功率波动。 配置模型嵌入了上述控制策略&#xf…...

Docker 核心知识点

一、Docker 是什么Docker 把应用 依赖 环境一起打包,放到一个轻量、隔离、可移植的容器里,在哪都能跑。二、3 个核心概念1. 镜像(Image)- 只读模板 - 相当于「安装包」「系统盘」- 例:nginx、centos、tomcat2. 容器…...

什么是 SMD 封装?是不是都不带引脚?

SMD Surface Mounted Device中文:表面贴装器件,就是直接贴在 PCB 板表面焊接的元器件,不是从孔里穿过去焊的那种。1. 是不是都不带引脚?不是绝对 “没有引脚”,而是没有长直插引脚。SMD 有两种典型结构:无…...

C++——数组类模板

1.模板参数可以是数值型参数&#xff08;非类型参数&#xff09;模板参数是在编译阶段被处理的单元&#xff0c;所以在编译阶段必须准确无误的唯一确定变量、浮点数、类对象不能作为模板参数示例&#xff1a;使用模板参数计算12...N#include <iostream> #include<stri…...

来晚了,最全openClaw 本地部署安装方式!(Mac 和 windows)

大家好&#xff0c;我是阿陆&#xff01; 最近哥们不是在面试嘛。面试都面到老板面了&#xff0c;结果老板问了一句&#xff0c;你有玩过openClaw嘛&#xff0c;我说没有。好家伙&#xff0c;这一句话一出来当场变脸。 后续不出所料&#xff0c;老板面没有通过。 我心里想着吃一…...

Dying Gasp IC 详解:定义、功能、选型参数与应用场景

引言在通信设备&#xff08;如 GPON ONU、xDSL Modem、工业网关&#xff09;的实际应用中&#xff0c;突然掉电可能导致设备状态丢失、网管无法定位故障等问题。Dying Gasp&#xff08;临终之息&#xff09;技术正是为解决这一痛点而生&#xff0c;而Dying Gasp IC作为该技术的…...

变异检测算法解析:GATK、Samtools、DeepVariant的原理与性能对比

点击 “AladdinEdu&#xff0c;你的AI学习实践工作坊”&#xff0c;注册即送-H卡级别算力&#xff0c;沉浸式云原生集成开发环境&#xff0c;80G大显存多卡并行&#xff0c;按量弹性计费&#xff0c;教育用户更享超低价。 摘要&#xff1a;变异检测是全基因组/全外显子组测序数…...

从对话到协作:深度解析 WebMCP —— 开启浏览器端的 AI 智能体新时代

在 2024 年底&#xff0c;Anthropic 推出了 MCP (Model Context Protocol)&#xff0c;试图为 AI 模型与外部数据源之间构建一条“通用数据总线”。然而&#xff0c;对于广大的前端开发者和 Web 生态来说&#xff0c;传统的 MCP 更多是在后端或桌面端发力。 2025 年初&#xf…...

java基础面试知识点

java基础 1. Java面试核心概念 Java三大特点 &#xff1a;平台无关性、面向对象、内存管理。 平台无关性&#xff1a;通过JVM&#xff08;Java虚拟机&#xff09;实现。源代码编译成字节码&#xff08;.class文件&#xff09;&#xff0c;可在任何安装了相应JVM的操作系统上运行…...

安装虚拟机详细教程!!!

...

【ASP.NET CORE】 11. SignalR

本系列专栏基于杨中科老师的《ASP.NET Core技术内幕与项目 实战》&#xff0c;本人记录梳理的学习笔记&#xff0c;有部分的增补和省略。更全面系统的讲解&#xff0c;请看杨老师的视频课&#xff1a;【.NET教程&#xff0c;.Net Core视频教程&#xff0c;杨中科主讲】。 一、…...

openclaw本地部署实践复盘 openclaw本地部署案例分享 openclaw本地部署亲测记录 openclaw本地部署实践分享 openclaw本地部署经验复盘 openc

在 openclaw本地部署 的实际项目推进中&#xff0c;环境依赖复杂、权限控制难统一以及插件生态缺乏标准化管理&#xff0c;往往成为工程团队普遍面临的技术挑战。围绕这一问题&#xff0c;行业中通常会通过更系统化的架构设计与部署流程来降低不确定性&#xff0c;北京万维速达…...

mac M芯片安装pytorch

用 conda 创建一个 arm64 的 Python 环境 在这个 conda 环境里用 pip 安装 PyTorch 用 MPS 验证是否启用了 Apple GPU 这是因为 PyTorch 官方当前在 macOS 上推荐的包管理方式是 pip&#xff0c;并注明最新稳定版要求 Python 3.10&#xff1b;macOS 安装页也直接给出了 pip3 in…...

灭菌柜集中监控管理平台解决方案

某工厂要求对研发实验室的多个灭菌柜进行集中监控与在线管理&#xff0c;需要监控的数据量包括干燥开始时间/结束时间、灭菌开始时间/结束时间、升温开始时间/结束时间等&#xff0c;便于统计实验结果与设备性能。对此&#xff0c;通过本地部署数据中台&#xff0c;能够实现多个…...

重置root密码!

mountmount -o remount,rw /sysroot&#xff08;这里需要注意空格哦&#xff01;&#xff01;&#xff01;&#xff09;chroot /sysrootpasswd输入新密码&#xff0c;输入的时候没有提示的哦再次输入设置的新密码touch /.autorelableexitexit注意哦&#xff0c;小编改的是root用…...

JavaScript性能优化实战迸礁

JavaScript性能优化实战技术文章大纲 性能优化的核心原则 减少代码执行时间 降低内存占用 优化网络请求 提升用户体验 代码层面的优化 避免全局变量污染&#xff0c;使用模块化或闭包 减少DOM操作&#xff0c;批量更新或使用文档片段 使用事件委托减少事件监听器数量 优化循环结…...

JavaScript性能优化实战枚徽

JavaScript性能优化实战技术文章大纲 性能优化的核心原则 减少代码执行时间 降低内存占用 优化网络请求 提升用户体验 代码层面的优化 避免全局变量污染&#xff0c;使用模块化或闭包 减少DOM操作&#xff0c;批量更新或使用文档片段 使用事件委托减少事件监听器数量 优化循环结…...

第3章 矩阵:系统、变换与结构的表达

底层数学四部曲第四部 线性代数&#xff1a;入门与全领域展开 第3章 矩阵&#xff1a;系统、变换与结构的表达 矩阵的本质&#xff0c;是线性关系的“容器”&#xff0c;是向量变换的“规则”&#xff0c;是复杂系统的“浓缩表达”。 上一章我们掌握了向量——线性世界的基本单…...

Thinkphp和Laravel框架都支持基于小程序的民宿预订系统-web pc 手机端

目录ThinkPHP与Laravel框架实现多端民宿预订系统的方案技术选型与架构设计核心功能模块实现数据库设计要点性能优化策略部署与监控跨端适配方案安全防护措施项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可…...

《C++实战项目-高并发内存池》8. 最终性能优化与测试

&#x1f4a1;Yupureki:个人主页 ✨个人专栏:《C》 《算法》《Linux系统编程》《高并发内存池》 &#x1f338;Yupureki&#x1f338;的简介: 目录 1. 使用基数树进行优化 2. 性能测试 完整项目链接https://github.com/Yupureki-code/ConcurrentMemoryPool 1. 使用基数树进行…...

网络安全--Windows操作系统

&#xff08;新手小白入门网络安全&#xff0c;学习Windows操作系统基础知识&#xff0c;如有错误&#xff0c;欢迎批评指正&#xff01;&#xff09;一、初识操作系统操作系统&#xff08;Operating System&#xff0c;简称OS&#xff09;是管理和控制计算机硬件与软件资源的计…...