题解 | #约瑟夫环#

约瑟夫环

https://ac.nowcoder.com/acm/problem/22227

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,k,m;
    cin>>n>>k>>m;
    int a[105] = {0},count = n;    //0表示还未被淘汰,1表示已经被淘汰 
	while(count!=1) 
	{
		//模拟报数过程 
		for(int i=1;i<=m-1;i++)
		{
			while(a[(k+1)%n])   //判断后面的一个人是否已经淘汰 
			{
				k=(k+1)%n;
			}
			k=(k+1)%n;
		}
		a[k]=1;               //表示报到m的人淘汰 
		count--;              //相应的人数要减一 
		while(a[k])
		{
			k = (k+1)%n;     //下次从出队的人之后开始重新报数,循环往复
		} 
	}
	cout<<k;
	return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
06-25 16:25
梧州学院 Java
愿汐_:项目介绍那么长,然而你做了啥就一句话?
点赞 评论 收藏
分享
评论
7
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务