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

【洛谷 P1996】约瑟夫问题 题解(队列+模拟+循环)

约瑟夫问题

题目描述

n n n 个人围成一圈,从第一个人开始报数,数到 m m m 的人出列,再由下一个人重新从 1 1 1 开始报数,数到 m m m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 n − 1 n-1 n1 名小朋友,而该题是全部出圈。

输入格式

输入两个整数 n , m n,m n,m

输出格式

输出一行 n n n 个整数,按顺序输出每个出圈人的编号。

样例 #1

样例输入 #1

10 3

样例输出 #1

3 6 9 2 7 1 8 5 10 4

提示

1 ≤ m , n ≤ 100 1 \le m, n \le 100 1m,n100


思路

首先将 1~n 的数依次加入队列中。

然后进行循环,每轮报数,前 m - 1 个,队首元素放到队尾,然后出队。第 m 个队首元素输出后出队。

重复此过程直到队列为空。


AC代码

#include <iostream>
#include <queue>
#define AUTHOR "HEX9CF"
using namespace std;int n, m;
queue<int> qu;int main()
{cin >> n >> m;for (int i = 1; i <= n; i++){qu.push(i);}while (!qu.empty()){for (int i = 1; i < m; i++){qu.push(qu.front());qu.pop();}cout << qu.front() << " ";qu.pop();}return 0;
}
http://www.lryc.cn/news/180022.html

相关文章:

  • 字符串函数与内存函数讲解
  • c语言系统编程之多进程
  • 前端还是后端:探讨Web开发的两大街区
  • JavaScript中如何确定this的值?如何指定this的值?
  • ubuntu下源码编译方式安装opencv
  • spring boot整合常用redis客户端(Jedis、Lettuce、RedisTemplate、Redisson)常见场景解决方案
  • HarmonyOS之运行Hello World
  • postgresql数据库|wal日志的开启以及如何管理
  • 小波变换学习笔记【1】
  • 雷柏mv20鼠标使用体验
  • 【分布式云储存】Springboot微服务接入MinIO实现文件服务
  • 机器人中的数值优化|【四】L-BFGS理论推导与延伸
  • ThemeForest – Canvas 7.2.0 – 多用途 HTML5 模板
  • 本地部署 川虎 Chat
  • IntelliJ IDEA 控制台中文乱码的四种解决方法
  • 23岁准备转行嵌入式
  • http请求报错:406 Not Acceptable的解决办法
  • 信息化发展75
  • C++八股
  • Nat. Commun. | 大规模高分辨单光子成像
  • Android开源库
  • 【小程序 - 基础】页面导航、页面事件、生命周期、WXS脚本_04
  • 矩阵求导数
  • 竞赛 大数据疫情分析及可视化系统
  • 数据结构--栈
  • 期权定价模型系列【7】:Barone-Adesi-Whaley定价模型
  • 【Axure高保真原型】3D圆柱图_中继器版
  • 多个线程启动 ,等待全部执行完毕再搜集数据
  • 【VIM】VIm-plug插件
  • ssl证书 阿里的域名,腾讯云的证书