[报数游戏]

embedded/2025/1/13 8:06:27/

题目描述

E卷 100分题型

100个人围成一圈,每个人有一个编码,编号从1开始到100。
他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。

请问最后剩余的人在原先的编号为多少?

输入描述
输入一个整数参数 M

输出描述
如果输入参数M小于等于1或者大于等于100,输出“ERROR!”;
否则按照原先的编号从小到大的顺序,以英文逗号分割输出编号字符串

示例1

输入

3

输出

58,91

示例2

输入

4

输出

34,45,97

题解

这是一个经典的约瑟夫环的问题。

  • 使用list结构(双向链表容器)移除中间元素(移除元素复杂度为O(1))将问题 转换为移除指定位置的元素。
    • pos记录最新一轮报数为1的位于lst容器的下表位置。
    • 下一轮要移除元素的下标 next = (pos + m) % lst.size()
#include<iostream>
#include <list>
using namespace std;int main() {int m ;cin >> m;// 数据合法性判断if (m <= 1 || m >= 100) {cout << "ERROR!";return 0;}list<int> lst;for (int i = 1; i <= 100; ++i) {lst.push_back(i);}// 当前轮报数为1的下标int pos = 0;while (lst.size() >= m) {pos = (pos + m - 1) % lst.size();// 移除指定位置的元素// 移除一个元素之后pos是不需要动的。[1,2,3,4], pos =2,移除3,[1,2,4],pos会自动指向4了std::list<int>::iterator it = lst.begin();std::advance(it, pos); lst.erase(it);}// 遍历列表for (auto it = lst.begin(); it != lst.end(); ++it) {// 输出元素cout << *it;// 判断是否是最后一个元素if (next(it) != lst.end()) {cout << ",";  // 不是最后一个元素,输出逗号}}return 0;
}

http://www.ppmy.cn/embedded/153500.html

相关文章

webpack打包要义

webpack基本 Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。它的工作原理可以概括为以下几个核心步骤&#xff1a; 1. 入口起点&#xff08;Entry&#xff09; Webpack 从配置文件中指定的入口文件&#xff08;Entry Point&#xff09;开始&#xff0c;分析应用…

Excel如何分区设置密码,一个区域一个密码,数据收集时使用太方便了

大家好&#xff0c;我是小鱼。 很多小伙伴在使用Excel表格的时候&#xff0c;有可能需要为不同的区域设置不同的密码&#xff0c;比如搜集公司不同的部门&#xff0c;或者学校不同的班级的信息时&#xff0c;为了使收集的信息不被别人改动&#xff0c;这时就需要为他们各自设置…

使用 Multer 上传图片到阿里云 OSS

文件上传到哪里更好&#xff1f; 上传到服务器本地 上传到服务器本地&#xff0c;这种方法在现今商业项目中&#xff0c;几乎已经见不到了。因为服务器带宽&#xff0c;磁盘 IO 都是非常有限的。将文件上传和读取放在自己服务器上&#xff0c;并不是明智的选择。 上传到云储存…

计算机网络(四)网络层

4.1、网络层概述 简介 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传输 这些异构型网络N1~N7如果只是需要各自内部通信&#xff0c;他们只要实现各自的物理层和数据链路层即可 但是如果要将这些异构型网络互连起来&#xff0c;形成一个更大的互…

【C++】深入理解substr()函数

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;函数概述参数说明&#xff1a;返回值&#xff1a; &#x1f4af;基础用法示例示例1&#xff1a;从指定位置提取到字符串末尾示例2&#xff1a;从指定位置提取固定长度的子串…

Python中如何使用正则表达式进行字符串匹配和替换?

在Python中&#xff0c;正则表达式是一种强大的工具&#xff0c;用于处理字符串的搜索、替换和分割等操作。Python的re模块提供了丰富的函数来支持这些功能。下面将详细介绍如何使用正则表达式进行字符串匹配和替换&#xff0c;并给出具体的示例。 1. 导入re模块 首先&#x…

Python图像处理实用指南:PIL库的多样化应用

Python图像处理实用指南&#xff1a;PIL库的多样化应用 在当今数字化时代&#xff0c;图像处理已成为众多领域不可或缺的技能之一。无论是社交媒体上的图片美化&#xff0c;还是专业领域的图像分析&#xff0c;掌握高效的图像处理技术都极为重要。本文将带你深入了解Python中P…

jeecg-boot 表单选择一条数据保存

HTML&#xff08;新增form&#xff09; <a-col :span"24"><a-form-item label"专题学习表名称" :labelCol"labelCol" :wrapperCol"wrapperCol"><!-- <a-input v-decorator"[studyName, validatorRules.studyN…