2037:【例5.4】约瑟夫问题
时间限制: 1000 ms 内存限制: 65536 KB
提交数:61490 通过数: 33971
【题目描述】
N�个人围成一圈,从第一个人开始报数,数到M�的人出圈;再由下一个人开始报数,数到M�的人出圈;…输出依次出圈的人的编号。
【输入】
输入N�和M�。
【输出】
输出一行,依次出圈的人的编号。
【输入样例】
8 5
【输出样例】
5 2 8 7 1 4 6 3
【提示】
【数据范围】
对于所有数据,2≤N,M≤10002≤�,�≤1000。
这道题的正确率也是比较惨昂,准备直接上代码!
#include<iostream>
using namespace std;
#include<queue>
queue<int> q;
int main()
{
int m,n,a=1;
cin>>m>>n;
for(int i=1;i<=m;i++)
q.push(i);
while(!q.empty())
{
if(a==n)
{
cout<<q.front()<<" ";
q.pop();
a=1;
}
else
{
a++;
q.push(q.front());
q.pop();
}
}
return 0;
}
加油