题目链接:https://www.luogu.org/problemnew/show/P1996
题目背景
约瑟夫是一个无聊的人!!!
题目描述
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
输入输出格式
输入格式:
n m
输出格式:
出圈的编号
输入输出样例
说明
m, n 100m,n≤100
代码
#include<bits/stdc++.h> using namespace std; int n,m;//n个人,报m出圈 queue<int> ring; int main() { cin>>n >>m; if(n==0) exit(0); for(int i=1;i<=n;i++) { ring.push(i); } int a; while(ring.size()>1) { for(int i=1;i<=m-1;i++) { a=ring.front(); ring.pop(); ring.push(a); } cout<<ring.front()<<" "; ring.pop();//队列形成了一个环下一个开始的数就是出队数的后一个 } cout<<ring.front()<<endl; return 0; }