报数


N 个人围成一圈,编号分别为 1,2,3……N 第一个人从 1 报数,按照编号顺序依次报数,

报 M 的人会离开队伍,然后下一个人会继续从 1 开始报数,直到剩下一人,剩下的人的编号是多少?

输入

共一行两个数 N 和 M

输出

输出一个数表示最后一人的编号。

样例

1
7 3
1
4

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
#include<queue>
using namespace std;

queue<int> que;

int main() {
//队列模拟约瑟夫环
int n, m; cin >> n >> m;
for(int i = 1; i <= n; ++i) que.push(i);
int now = 1;//更新报1的位置
while(que.size() != 1){
if (now != m) {
que.push(que.front());
now++;
} else {
now = 1;
}
que.pop();
}
cout << que.front() << endl;
return 0;
}