采用环状链表实现
#include <bits/stdc++.h>
using namespace std;int main()
{
int m, n, k;
cin >> n >> k >> m;
list<int> l1;
for (int i = 0; i < n; i++)
{
l1.push_back(i);
}
auto it1 = l1.begin();
for (int i = 1; i <= k; i++)
{
it1++;
}
while (n != 1)
{
int x = m - 1;
while (x--)
{ if(it1==--l1.end())
it1 = l1.begin();
else it1++;
}
if (it1 == --l1.end())
{
it1 = l1.erase(it1);
it1 = l1.begin();
}
else
{
it1 = l1.erase(it1);
}
n--;
}
cout << l1.front();
}