出圈

534 词

题目描述

设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。 $n[2,100]$,$m[1,n]$

输入

输入多行,每行2个数,分别表示n和m.

输出

计算每一行中最后剩下这个人的编号.

样例输入

1
10 3

样例输出

1
4

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n, m;
while(cin >> n >> m){
queue<int> a;
for (int i = 1; i <= n; ++i) {
a.push(i);
}
while (a.size() != 1) {
for (int ii = 1; ii < m; ++ii) {
a.push(a.front());
a.pop();
}
a.pop();
}
cout<<a.front()<<endl;}
return 0;
}