[洛谷] P1996 约瑟夫问题

题目:https://www.luogu.com.cn/problem/P1996

这是一道很典型的题(也是一道入门难度的模拟水题)

首先看看题目,乍一看是个模拟题

再看数据范围,1m,n100,一般来说O(n3 )以下的时间复杂度都ok(甚至更高) 

好家伙,这也就意味着不需要想什么精妙的算法,直接暴力模拟就可以。

 

代码如下

 

复制代码
 1 #include<bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int n,m;
 6 int vis[105]; //用于记录是否出列,坐标从1~n
 7 
 8 int main()
 9 {
10     cin>>n>>m;int now=0;//注意这里的处理
11     for(int i=1;i<=n;i++)
12     {
13         int cnt=0; //数到m个人的计数器
14         while(cnt<m)
15         {
16             now++;
17             if(now>n) now-=n;//边界处理
18             while(vis[now])
19             {
20                 now++;
21                 if(now>n) now-=n;
22             }//跳到下一个没有出列的人
23             cnt++;
24         }
25         vis[now]=1;
26         cout<<now<<" ";
27     }
28     return 0;
29  } 
复制代码

 


唯一需要的大概就是细心吧

 

posted @   Adaxy  阅读(84)  评论(0编辑  收藏  举报
编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· 为DeepSeek添加本地知识库
· 精选4款基于.NET开源、功能强大的通讯调试工具
· DeepSeek智能编程
· 大模型工具KTransformer的安装
· [计算机/硬件/GPU] 显卡
点击右上角即可分享
微信分享提示