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

news2024/10/5 18:29:37

题目要求:

输入、输出样例:

源代码:

#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;
}

 运行结果:

 

 

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

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

相关文章

【LeetCode】字符串与栈的练习

字符串相乘 class Solution { public:/** 将两个字符串相乘拆分成两步&#xff1a;* 先将一个字符串的每个字符与另一个字符串相乘得到一个计算结果* 再将所有计算结果的字符串进行相加*/string multiply(string num1, string num2) {string result "0";// 一个字…

微服务——es数据聚合+RestClient实现聚合

数据聚合 聚合的种类 DSL实现Bucket聚合 如图所示&#xff0c;设置了10个桶&#xff0c;那么就显示了数量最多的前10个桶&#xff0c;品牌含有7天酒店的有30家&#xff0c; 品牌含有如家的也有30家。 修改排序规则 限定聚合范围 DSL实现Metrics聚合 如下案例要求对不同的品…

录像模糊变高清:提高录制视频清晰度的方法

录像是记录生活点滴的重要方式之一&#xff0c;然而&#xff0c;由于种种原因&#xff0c;我们可能会遇到一些模糊、不清晰的视频。为了解决这一问题&#xff0c;今天来给大家分享一下如何利用牛学长视频修复工具修复录像视频清晰度的方法&#xff0c;方便快捷&#xff0c;无需…

springBoot集成caffeine,自定义缓存配置 CacheManager

目录 springboot集成caffeine Maven依赖 配置信息&#xff1a;properties文件 config配置 使用案例 Caffeine定制化配置多个cachemanager springboot集成redis并且定制化配置cachemanager springboot集成caffeine Caffeine是一种基于服务器内存的缓存库。它将数据存储在…

批量查询快递信息的最佳解决方案

快递查询是我们日常生活中经常需要进行的操作&#xff0c;然而&#xff0c;当我们有多个快递单号需要查询时&#xff0c;逐个查询就显得非常繁琐和耗时。为了解决这个问题&#xff0c;今天给大家推荐一款实用的软件——【固乔快递查询助手】。 首先&#xff0c;在浏览器中搜索并…

Activity启动过程详解(Android 12源码分析)

Activity的启动方式 启动一个Activity&#xff0c;通常有两种情况&#xff0c;一种是在应用内部启动Activity&#xff0c;另一种是Launcher启动 1、应用内启动 通过startActivity来启动Activity 启动流程&#xff1a; 一、Activity启动的发起 二、Activity的管理——ATMS 三、…

Mysql根据创建时间表分区实践

背景 最近订单表遇到大数据量的问题&#xff0c;并且表中随着时间的积累会变得更大&#xff0c;当数据量较大时&#xff0c;存储的物理文件会变得非常大、使用性能很差。 我们用的是GaussDB。为了提高查询效率&#xff0c;建议表大于500w进行分区&#xff0c;所以在规划阶段我…

opencv基础47 查找图像轮廓cv2.findContours()详解

什么是图像轮廓&#xff1f; 图像轮廓是指图像中物体边缘的连续性曲线。在计算机视觉和图像处理中&#xff0c;轮廓通常被用于检测物体、分割图像以及提取物体特征。 图像轮廓是由一系列连续的像素点组成&#xff0c;这些像素点位于物体边界上。轮廓的特点是在物体和背景之间的…

springboot生成表结构和表数据sql

需求 业务背景是需要某单机程序需要把正在进行的任务导出&#xff0c;然后另一台电脑上单机继续运行&#xff0c;我这里选择的方案是同步SQL形式&#xff0c;并保证ID随机&#xff0c;多个数据库不会重复。 实现 package com.nari.web.controller.demo.controller;import cn…

Android 11 获取启动其他应用

Android 11 获取启动其他应用 本文代码地址 https://gitee.com/chenjim/QueryAppInfo 最新更新地址 https://gitee.com/chenjim/chenjimblog 前言 如果应用以 Android 11&#xff08;API 级别 30&#xff09;或更高版本为目标平台&#xff0c;并查询与设备上已安装的其他应用相…

Python 面试必知必会(一):数据结构

《Python Cookbook》的作者David Beazley的课程PPT开源了&#xff0c;目标用户是希望从编写基础脚本过渡到编写更复杂程序的高级 Python 程序员&#xff0c;课程主题侧重于流行库和框架中使用的编程技术&#xff0c;主要目的是更好地理解 Python 语言本身&#xff0c;以便阅读他…

简易图书管理系统(面向对象思想)

目录 前言 1.整体思路 2.Book包 2.1Book类 2.2BookList类 3.user包 3.1User类 3.2NormalUser类 3.3AdminUser类 4.operation 4.1IOPeration接口 4.2ExitOperation类 4.3FindOperation类 4.4ShowOperation类 4.5AddOperation类 4.6DelOperation类 4.7BorrowOpera…

下半年提速拓店,为什么说屈臣氏引领美妆零售的未来?

屈臣氏过去是美妆零售的先锋&#xff0c;目前来看它或许仍然是先锋。 杰弗里摩尔在《公司进化论》中总结提出&#xff0c;自由市场经济运作的方式&#xff0c;遵循着一些类似自然界有机系统的定律&#xff1a;通俗来说&#xff0c;资源竞争带来“刺激创新”——由消费者偏好形…

看重ARM?苹果、三星、英伟达等知名企业纷纷表示加大投资

根据日经亚洲的报道&#xff0c;芯片设计公司Arm计划进行首次公开募股并在纳斯达克上市。苹果、三星电子、英伟达、英特尔等知名企业计划在Arm美股上市后投资该公司。 据悉&#xff0c;Arm将于9月份上市&#xff0c;预计估值将达到至少600亿美元&#xff08;约合4314亿元人民币…

【PyQt5+matplotlib】获取鼠标在canvas上的点击坐标

示例代码&#xff1a; import sys import matplotlib.pyplot as plt from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasclass MyMainWindow(QMainWindow):de…

vulnhub靶场-y0usef笔记

vulnhub靶场-y0usef笔记 信息收集 首先fscan找到目标机器ip http://192.168.167.70/ nmap扫描端口 Host is up (0.00029s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ub…

(十五)大数据实战——hive的安装部署

前言 Hive是由Facebook开源&#xff0c;基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张表&#xff0c;并提供类SQL查询功能。本节内容我们主要介绍一下hive的安装与部署的相关内容。 正文 上传hive安装包到hadoop101服务器/opt/software目录 解…

Reinforcement Learning with Code (对比Monte-Carlo与TD算法)【Code 3. MonteCarlo】

Reinforcement Learning with Code & &#xff08;对比Monte-Carlo与TD算法&#xff09;【Code 3. MonteCarlo】 This note records how the author begin to learn RL. Both theoretical understanding and code practice are presented. Many material are referenced s…

成功搞定H7-TOO的FreeRTOS Trace图形化链表方式展示任务管理

之前推出了H7-TOOL的RTOS Trace功能&#xff0c;已经支持RTX5&#xff0c;ThreadX&#xff0c;uCOS-III&#xff0c;uCOS-II和FreeRTOS&#xff0c;特色是不需要目标板额外做任何代码&#xff0c;实时检测RTOS任务执行情况&#xff0c;支持在线和脱机玩法&#xff0c;效果是下面…

网络编程——字节序和地址转换

字节序和地址转换 一、字节序 1、字节序概念 是指多字节数据的存储顺序,数据在内存中存储的方式 2、分类 大端序(网络字节序)&#xff1a;高位的数据存放在低地址位 arm架构、交换机、路由器 小端序(主机字节序)&#xff1a;高位的数据存放在高地址位 x86架构计算机 注意 …