题目描述
时间限制: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;
}
请各位大佬看看有什么问题