【题解】约瑟夫问题

题解-约瑟夫问题 文章目录模拟队列 题目描述 nn 个人围成一圈,从第一个人开始报数,数到 mm 的人出列,再由下一个人重新从 11 开始报数,数到 mm 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。 输入格式 输入两个整数 n,mn,m。 输出格式 输出一行 nn 个整数,按顺序输出每个出圈人的编号。 输入输出样例 输入 #1 10 3 输出 #1 3 6 9 2 7 1 8 5 10 4 说明/提示 1 \le m, n \le 1001≤m,n≤100 模拟 模拟这个过程,然后接下来一个一个去做 阅读详情

题目描述

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

输入格式
输入两个整数 n,mn,m。

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

输入输出样例
输入 #1
10 3
输出 #1
3 6 9 2 7 1 8 5 10 4
说明/提示
1 \le m, n \le 1001≤m,n≤100


模拟

模拟这个过程,然后接下来一个一个去做,vis记录全过程。但必须要开始将其值设置为flase。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,m,ans=0;
 4 bool vis[1000]={0};
 5 int main(){
 6     cin>>n>>m;
 7     for(int i=0;i<n;i++){
 8         for(int i=0;i<m;i++){
 9             ans++;
10             if(n<ans)ans=1;
11             if(vis[ans])i-=1;
12         }
13         cout<<ans<<" ";
14         vis[ans]=1;
15     }
16     return 0;
17 }

队列

与模拟差不多。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,m,ans=1;
 4 queue<int> qu;
 5 int main(){
 6     cin>>n>>m;
 7     for(int i=1;i<=n;i++){
 8         qu.push(i);
 9     }
10     while(!qu.empty()){
11         if(ans==m){
12             cout<<qu.front()<<" ";
13             qu.pop();
14             ans=1;
15         }else{
16             ans++;
17             qu.push(qu.front());
18             qu.pop();
19         }
20     }
21     return 0;
22 }
题解:洛谷 P1996 约瑟夫问题 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。个人围成一圈,从第一个人开始报数,数到。个整数,按顺序输出每个出圈人的编号。的人出列,再由下一个人重新从。#普及-# #树状数组#本文分享的必刷题目是从。 阅读详情

相关推荐

【codevs 1282】 约瑟夫问题 【题解】

模拟: #include"stdio.h" int main() { int m,n,i,j; int s=1; int a[30005]; scanf("%d%d",&n,&m); for(i=0;i<=n;i++) a[i]=i; while(n){ i=(s+m-1)%n;//出列的下标 if(i==0) i=n; printf("%d ",a[i])

skysys的研究小屋 1074

洛谷:P1996 约瑟夫问题Java题解

约瑟夫问题是一个经典的数学问题,描述n个人围成一圈,从指定位置开始报数,数到m的人出列,然后从下一个人重新开始报数,直到所有人都出列。本题要求输出出列的顺序。这种方法直观地模拟了约瑟夫问题的过程,代码简洁易懂,适合处理小规模数据(n,m ≤ 100)。对于更大规模的数据,可以考虑数学解法优化性能。• 时间复杂度:O(n×m),最坏情况下需要遍历n次,每次最多处理m个元素。• 空间复杂度:O(n),队列最多存储n个元素。

Java爱好者,热爱分享,信仰开源! 420

手把手教你用EGM96模型校正DEM数据(含在线工具推荐)

本文详细介绍了如何使用EGM96地球重力场模型校正DEM数据中的高程偏差。通过对比WGS84椭球面与大地水准面的差异,解释了校正原理,并提供了从在线工具快速验证到Python脚本批量处理的全流程实战指南,帮助GIS开发者和数据分析师确保高程数据基准一致,提升空间分析精度。

ttt77的博客 1007

洛谷 P1996 约瑟夫问题之题解

本文介绍了洛谷P1996约瑟夫问题的三种解法:STL list、动态链表和静态链表。题目要求n个人围成一圈,从1开始报数,数到m的人出列,直到所有人出圈。STL list解法利用C++标准库的双向链表实现;动态链表通过指针管理节点空间;静态链表则使用预分配的连续空间,包括单向和双向两种实现。三种方法各有优缺点,STL list编码简单但效率较低,动态链表标准但管理复杂,静态链表适合算法竞赛快速实现。代码示例展示了每种方法的具体实现。

alexwang211的博客 1216

OpenEvidence DeepConsult深度分析:技术架构、临床应用与行业影响

摘要:医疗AI平台OpenEvidence通过多智能体协作系统重构临床决策流程,解决了医学信息过载难题。其DeepConsult系统严格基于同行评审文献,5-10秒内提供循证决策支持,已覆盖40%美国医生,月咨询量达850万次。该平台采用"免费工具+广告变现"模式,通过调度、检索、摘要等模块化智能体分工,实现从文献分析到临床建议的闭环处理,在USMLE测试中准确率达90%。2025年获7500万美元融资后估值突破10亿美元,成为医疗AI领域的新范式。

AllenLV的博客 2555

多目标优化NSGA-II(快速精英非支配排序遗传算法)及python实现

文章目录前言一、什么是NSGA-II?二、学习NSGA-II1.快速非支配排序算法2.密度估计3.拥挤比较算子4.主循环5.代码6.总结 前言 NSGA-II适用于复杂的多目标优化问题,是K-Deb教授在2000年在一篇paper《MOEAs — A fast and elitist multi-objective genetic algorithm: nsga2》提出。 Keywords: optimization; multi-objective evolutionary algorithm; no

ricky_blog 9744

洛谷P1996 约瑟夫问题 题解(C++)

题目描述题目描述n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。输入两个整数n,m。输出格式输出一行 n 个整数,按顺序输出每个出圈人的编号。输入输出样例输入#110 3输出#1说明/提示1≤m,n≤100题解本题目我们需要通过代码来模拟以下过程:编号1~n的人围成一个圈,自编号为1的人开始从1报数,报到m就出列。

2401_87841674的博客 637

Oracle-如何修复undo坏快

undo出现坏快,导致数据库宕机,无法启动

qqqyyy0422的博客 570

P1996 约瑟夫问题 题解

P1996 约瑟夫问题 题解

yaosichengalpha的博客 931

2️⃣ Coze创建智能体教学(2025年全新版本)

扣子平台提供强大支持,可将智能体轻松集成至各类社交平台,使智能体得以服务更为庞大的用户群体。当下支持集成的平台如下:​1️⃣豆包:作为聚焦 AI 内容创作的平台,非常适合发布充满创意、娱乐性强的智能体。​2️⃣飞书:适合发布用于办公协作的智能体,助力团队提升工作效率。​3️⃣微信:借助公众号或小程序的形式,能够服务海量微信用户。​4️⃣抖音:适合发布与短视频相关的智能体,为用户提供创意与娱乐服务。​

李同学Lino的博客 4574

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

伶俐角少儿编程 727

约瑟夫问题(改版)[含题解]

约瑟夫问题来源于公元1世纪的犹太历史学家Josephus。 问题描述,有n个人(分别以编号1,2,3...n表示)围成一个圆圈,从编号为1的人开始进行1~m正向报数,报到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;如此重复下去,直到所有的人全部出列,求最后一个出列人的编号。

wish_cici的博客 834

Unity 面试篇|(四)Unity性能优化篇 【全面总结 | 持续更新】

Unity中,CPU准备好需要绘制的元素,对底层图形程序接口进行调用的过程,每次引擎准备数据并通知GPU的过程称为一次Draw Call。DrawCall越高对显卡的消耗就越大。降低DrawCall的方法:动态合批静态合批降低shader的等级特性场景优化策略——遮挡技术。rectMask2D替代Mask。

游戏开发小Y的博客 13万+

c++_约瑟夫问题 题解

c++题目题解

曾梦想仗剑走天涯,梦想AK天下WA 873

ArcGIS实验教程——实验二十五:大型商场选址经典案例

本实验基于ArcGIS平台进行商场选址分析,综合考虑道路、居民点、停车场和已有商场四个影响因素。通过缓冲区分析建立各要素的影响范围(道路50米、居民点100米、停车场100米、已有商场500米),采用叠加分析中的相交和擦除运算确定最优选址区域。实验建立了区位评价体系,通过属性赋值(1/-1)和联合运算生成综合评价结果,并实现分级可视化显示。注意事项包括距离参数设置对结果的影响以及正确选择空间分析工具。该流程为商业选址提供了科学的GIS解决方案。

智慧空间实验室 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

约瑟夫问题题解

约瑟夫问题,首先建立一个整形数组a,存放每个人的编号。 然后进行一个死循环,退出的条件是只剩一个人。 在死循环中再做一个for循环(下标为i),用来一个一个的报数,只有当这个人没有退出时,才继续往下报数; 从for循环出来,就输出答案。 剩余的人数减一人。 #include using namespace std; int main() {     int n,m,i,j,p;

u014132638的专栏 512

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

约瑟夫问题:猴子选大王——题解与总结

队列模拟的优势在于它完全模拟题目描述的实际过程,容易理解和验证,同时其不依赖特定的数学公式,适合不熟悉约瑟夫问题的开发者。但是这种方法的劣势在于空间复杂度高:需要O(N)的额外空间存储所有猴子,当N非常大时(如超过百万),可能因内存限制而无法使用数学递推公式的优势在于它的空间效率极高:只需要O(1)的额外空间,仅使用几个变量,可以轻松处理N非常大的情况(如N=1e9),也不需要模拟过程,直接通过计算得到结果。而它的劣势在于理解难度高,需要理解约瑟夫问题的数学推导,不易直观把握,

Daybreak_OvO的博客 779

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

洛谷 P1996 约瑟夫问题(队列题解)

摘要 本文介绍了约瑟夫问题的解决方法。题目描述n个人围成一圈,从第1人开始报数,数到m的人出列,重复此过程直到所有人出列。使用C++队列实现该算法:初始化队列后,循环将队首元素移至队尾m-1次,输出并移除第m个元素,直到队列为空。示例输入10 3对应输出3 6 9 2 7 1 8 5 10 4。该解法时间复杂度为O(n*m),适用于n,m≤100的情况。

初心如磐,逐梦前行||b站@一个空客迷 215

约瑟夫环问题题解

按照1-8顺寻存储,起始位置为3,数到4的人出列。 #include<iostream> using namespace std; typedef struct node { int num; struct node* next; }Node; int main() { int n = 8, k = 3, m = 4; Node*h = (No...

用可见的方式来记录和分享每一次收获 319

题解:约瑟夫环问题

https://g-ss-hacker.github.io/G-SS-Hacker.github.io/%E9%A2%98%E8%A7%A3%EF%BC%9A%E7%BA%A6%E7%91%9F%E5%A4%AB%E7%8E%AF%E9%97%AE%E9%A2%98/

HACK IT!!! 395

约瑟夫问题解答

问题: 编号为1,2,····n的n个人按顺时针做成一圈,一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺时针报数,报到m时停止,这个人出列。从他在顺时针方向上的下一个人开始重新报数,如此下去,直至所有人出列。下面是用STL中的list#include <iostream> #include <list> #include <algorithm> using names

liuchenjane的博客 788

约瑟夫问题 题解

@[队列](代码详解) #include #include using namespace std; int n,num,b,c,top; queueqq; void cd(){ //循环出数*每次出一个 top=1; do { ++top; qq.push(qq.front()); qq.pop(); }while(top<num); cout<<qq.front()&l...

GoldbaheLee的博客 237

C++ 约瑟夫问题

C++ 约瑟夫问题 洛谷 P1996

你创题, 我AC, 出题解 1127

约瑟夫循环c语言实现 , 约瑟夫环问题解答

问题描述: 运行实例: 运行结果解析: copyright vivi_and_qiao #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct Lnode { int num,password; struct Lnode *next; }node; int m; node *d

vivi_and_qiao的博客 1852
上一篇: 【题解】删数问题加强版
下一篇: 【题解】负进制
Cancelleds
博客等级 码龄8年 1110粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值