站外题求助:一关
  • 板块学术版
  • 楼主Chalage_2010
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/4/16 11:23
  • 上次更新2023/10/23 18:19:08
查看原帖
站外题求助:一关
760690
Chalage_2010楼主2023/4/16 11:23

题目描述

时间限制:1s    空间限制:64M

 
题目描述:

约瑟夫问题:已知有 N 只猴子,要选一个大王,它们先按 1 到 N 的编号排成一圈,然后从 1 号猴子开始依次报数,报到 K 的猴子就出去,接下的猴子又从 1 开始报数,…, 直到圈中只有一个猴子为止,最后留下的猴子就是大王。输入 N,K,输出第几号猴子当大王。

 
输入格式:

两个正整数 N, K。(1≤K≤N≤10000)

 
输出格式:

当大王的猴子编号。

 
样例输入:

20 3

 
样例输出:

20

 

我的代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	queue<int> q;
	int n,k,x=0;
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		q.push(i);
	}
	while(q.size()!=1)
	{
		x++;
		if(x==k)
		{
			q.pop();
			x=0;
		}
		int a=q.front();
		q.pop();
		q.push(a);
	}
	cout<<q.front();
	return 0;
}

请各位大佬看看有什么问题

2023/4/16 11:23
加载中...