[保研/考研机试] 约瑟夫问题No.2 C++实现

题目要求:

输入、输出样例:

源代码:

#include<iostream>
#include<queue>
#include<vector>
using namespace std;

//例题5.2 约瑟夫问题No.2
int main()
{
	int n, p, m;
	while (cin >> n >> p >> m) {
		//如果输入的是3个0,直接结束循环
		if (n == 0 && p == 0 && m == 0) {
			break;
		}
		//定义一个队列,用于存放n个小孩的编号
		queue<int> myQueue;
		//由于是从编号为p的小孩开始,直接按照 p,p+1,...n,1,2,...,p-1的顺序存入队列中
		for (int i = p; i <= n; i++) { // 存储p,p+1,...n的编号
			myQueue.push(i);
		}
		for (int i = 1; i < p; i++) { // 存储1,2,...,p-1的编号
			myQueue.push(i);
		}

		//定义一个vector,由于vector不会自动阿皮序,可以用于保存永久出队的元素的先后顺序,就是小孩从圈中出队的顺序
		vector<int> nums;
		//开始循环,只要队列不为空,说明小孩还没有全部出队,那就继续遍历
		while (!myQueue.empty()) {
			//由于报数是从1开始的,这里的i初始化为1,便于后续判断是否为4的整数倍
			//for循环的结束条件为nums中元素个数为小孩的总个数,说明此时小孩已经全部出队
			for (int i = 1; nums.size() < n; i++) {
				//当i为m的整数倍时,说明此时队头数字代表的小孩报数为m,直接出队,并且保存该数字到nums中
				//注意,要先保存到nums中,再出队
				if (i % m == 0) {
					nums.push_back(myQueue.front());
					myQueue.pop();
				}
				//当i不为m的整数倍时,说明此时队头数字代表的小孩报数不是m,直接放入队尾,出队,让下一个元素于队头
				else {
					myQueue.push(myQueue.front());
					myQueue.pop();
				}
			}
		}
		//由于输出用英文逗号隔开,且最后一个元素后面不需要逗号,那就先输出出最后的一个元素和逗号,再输出最后的元素
		for (int i = 0; i < nums.size()-1; i++) {
			cout << nums[i] << ",";
		}
		cout << nums[nums.size() - 1] << endl;
	}
	
	return 0;
}

 运行结果:

 

 

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

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

相关文章

【Linux操作系统】GCC编译与静态库、动态库制作详解

GCC是一款广泛使用的开源编译器&#xff0c;它支持多种编程语言&#xff0c;并且具有强大的编译能力。在软件开发中&#xff0c;我们经常需要将代码编译成可执行文件或者库文件。本文将详细介绍GCC编译过程以及如何制作静态库和动态库。 文章目录 一、GCC编译过程1. 预处理阶段…

龙芯积极研发二进制翻译,提升软硬件兼容性,提高LoongArch架构

根据8月8日Phoronix报道&#xff0c;龙芯正在积极研发龙芯二进制翻译功能&#xff08;Loongson Binary Translationm&#xff0c;LBT&#xff09;以提高LoongArch架构与其他处理器&#xff08;如MIPS/x86/Arm&#xff09;的二进制翻译能力&#xff0c;这重要举措将显著提升龙芯…

list交并补差集合

list交并补差集合 工具类依赖 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version> </dependency><dependency><groupId>commons-collections&…

数据库管理员知识图谱

初入职场的程序猿&#xff0c;需要为自己做好职业规划&#xff0c;在职场的赛道上&#xff0c;需要保持学习&#xff0c;并不断点亮自己的技能树。  成为一名DBA需要掌握什么技能呢&#xff0c;先让Chat-GPT为我们回答一下&#xff1a; 数据库管理系统 (DBMS)知识&#xff…

网络安全--mysql中事务锁以及事务隔离解析

一、事务锁 1、个人理解&#xff1a; 专一性和历史性&#xff0c;例如一个男人历史上是花心的&#xff0c;但当他成长后开启begin和update后变的专一了&#xff0c;多项事务也影响不到他了&#xff0c;直到水泥封心&#xff0c;只可被一个人查询在此我们进入正题&#xff1a;…

前端工具类

日期类 1️⃣ 新建index.js文件/*** param {date} time 需要转换的时间* param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss*/ export function formatTime(time, fmt) {if (!time) {return "";}else {const date new Date(time);const o {M:…

web前端html

文章目录 快捷方式一、html5的声明二、html5基本骨架 2.1 html标签 2.2 head标签 2.3 body和head同级 2.4 body标签 2.5 title标签 2.6 meta标签 三、标题标签介绍与应用 3.1 标题的介绍 3.2 标题标签位置摆放 3.3 标签之段落、换行、水平线 3.3 标签之图片 3.3.1 图…

2023,谁在引领实时互动进入高清时代?

实践是检验真理的唯一标准&#xff0c;技术是行业进步的核心动能。在实时互动的新时代里&#xff0c;不断进化的声网已然完成自证。 作者|斗斗 出品|产业家 “一个医疗行业的客户&#xff0c;曾向我们提出一个需求&#xff0c;希望在120急救场景下&#xff0c;可以远程看清…

【C++】常用到的“using namespace std;”到底是什么?

一、引言 在初学C时&#xff0c;在包含完头文件之后&#xff0c;我们常常会看到这么一句话&#xff1a;using namespace std; 比如&#xff1a; #include<iostream> using namespace std; int main() {cout << "hello world" << endl;return 0…

dubbo之基础知识

Dubbo 官网地址&#xff1a;Apache Dubbo Dubbo 是一款易用、高性能的 WEB 和 RPC 框架&#xff0c;同时为构建企业级微服务提供服务发现、流量治理、可观测、认证鉴权等能力、工具与最佳实践 作用 1.远程方法调用 2.容错和负载均衡 3.提供服务的自动注册与发现 为什么需要…

代理模式(C++)

定义 为其他对象提供一种代理以控制(隔离&#xff0c;使用接口)对这个对象的访问。。 应用场景 在面向对象系统中&#xff0c;有些对象由于某种原因(比如对象创建的开销很大&#xff0c;或者某些操作需要安全控制&#xff0c;或者需要进程外的访问等)直接访问会给使用者、或…

接口测试——电商网站接口测试实战(四)

1. 接口测试需求分析 常见接口文档提供的两种方式 ①word文档 ②在线文档 电商网站网址模拟练习&#xff1a;Swagger UI 2. 登陆的分析 慕慕生鲜网址&#xff1a;慕慕生鲜账号密码点击execute后 输入账号密码后点击开发者工具&#xff0c;再登录&#xff0c;点击网络&…

Nginx的优化和防盗链

一、Nginx的优化 1、隐藏版本号 curl -I http://192.168.79.28 #查看信息&#xff08;版本号等&#xff09;方法一&#xff1a;修改配置文件 vim /usr/local/nginx/conf/nginx.conf vim /usr/local/nginx/conf/nginx.conf http {include mime.types;default_type ap…

2023-08-04 Untiy进阶 C#知识补充4——C#5主要功能与语法

文章目录 一、概述二、回顾——线程三、线程池四、Task 任务类五、同步和异步 ​ 注意&#xff1a;在此仅提及 Unity 开发中会用到的一些功能和特性&#xff0c;对于不适合在 Unity 中使用的内容会忽略。 一、概述 C# 5 调用方信息特性&#xff08;C# 进阶内容&#xff09;异步…

【大数据】Flink 详解(二):核心篇 Ⅰ

Flink 详解&#xff08;二&#xff09;&#xff1a;核心篇 Ⅰ 14、Flink 的四大基石是什么&#xff1f; ​ Flink 的四大基石分别是&#xff1a; Checkpoint&#xff08;检查点&#xff09;State&#xff08;状态&#xff09;Time&#xff08;时间&#xff09;Window&#xff…

54款宝藏级AIGC工具分享(claude,Midjourney,Stable Diffusion等)

随着ChatGPT的一波又一波高潮&#xff0c;生成式AI逐渐进入人们视野&#xff0c;并开始大行其道&#xff0c;正如人们所说&#xff1a;AI用的好&#xff0c;天天下班早&#xff01; 当然&#xff0c;有效的利用AI不但能下班早&#xff0c;还能在上班时间摸鱼&#xff0c;就如潘…

【Docker】数据库动态授权组件在Kubernetes集群下的测试过程记录

目录 背景 组件原理 测试设计 环境 测试脚本 脚本build为linux可执行文件 镜像构建 Dockerfile Docker build 镜像有效性验证 总结 资料获取方法 背景 我们都知道出于安全性考虑&#xff0c;生产环境的权限一般都是要做最小化控制&#xff0c;尤其是数据库的操作授…

2023年华数杯数学建模B题思路代码分析 - 不透明制品最优配色方案设计

# 1 赛题 B 题 不透明制品最优配色方案设计 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此&#xff0c;不透明 制品的配色对其外观美观度和市场竞争力起着重要作用。然而&#xff0c;传统的人工配色 存在一定的局限性&#xff0c;如主观性强、效率低下等。因此…

华三H3C S5120V3交换机的配置之组建IRF

IRF&#xff08;Intelligent Resilient Framework&#xff0c;智能弹性架构&#xff09;&#xff0c;是华三交换机实现虚拟堆叠的一种技术&#xff0c;其核心思想是将多台交换机连接在一起&#xff0c;虚拟成一台交换机&#xff0c;进而实现统一管理。和传统的堆叠概念不同&…

Python如何解决Amazon亚马逊“图文验证码”识别(6)

前言 本文是该专栏的第55篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏前面,笔者有详细介绍多种登录验证码识别方法,感兴趣的同学可往前翻阅。而本文,笔者将单独详细介绍亚马逊Amazon的图文识别验证码的解决方法。 如上图所示,访问或请求频次达到一定程度之…