#include<iostream>
#include<list>
#include<numeric>
using namespace std;
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, m, cnt = 1; cin >> n >> m;
if (n <= 1 || n >= 100 || m <= 1 || m >= 100 || m >= n) return 0;
list<int> lt(n);
iota(lt.begin(), lt.end(), 1);//编号的赋值
auto it = lt.begin();
while (lt.size() > 1)//保证只剩一个人
{
//不管是否被枪毙,it都要往后移动
if (cnt % m == 0) it = lt.erase(it);//返回被枪毙的下一个迭代器
else it++;
cnt = (cnt == m ? 1 : ++cnt);
if (it == lt.end()) it = lt.begin();//到尾部就转为表头
}
cout << *it;
return 0;
}
约瑟夫环的代码
最新推荐文章于 2024-05-16 01:40:50 发布