#include <iostream>
#include <list>
using namespace std;
int Josephus(int n, int k, int m)
{
list<int> ilist;
int pos = 1;
for (;pos <= n; pos ++)
{
ilist.push_back(pos);
}
list<int>::iterator itor = ilist.begin();
while (ilist.size() != 1)
{
int start = k;
while ((start != m )&& (ilist.size() != 1))
{
itor++;
start--;
if (itor == ilist.end())
{
itor = ilist.begin();
}
}
itor = ilist.erase(itor);
if (itor == ilist.end())
{
itor = ilist.begin();
}
}
return *(ilist.begin());
}
int main()
{
//5个人,第一个人报3,直到报1的人出列,依次循环,直到剩下的最后一个人。
cout << Josephus(5,3,1);
}