#include<iostream>
using namespace std;
void NoflagGo(int *x,int n,int *a)//该函数功能让x去下一个没有标记的编号
{
    while(1)
    {
        if(*x==n-1)*x=0;
        else (*x)++;
        if(a[*x]==0)break; 
    }
}
int main()
{
    int n,k,m;cin>>n>>k>>m;
    int a[n];
    for(int i=0;i<n;i++)a[i]=0;
    int t1=n,t2=1,x=k;//t1是剩余人数计数器,t2是报数计数器,x是编号追踪
    while(t1!=1)
    {
        if(t2==m)
        {
            a[x]=1;
            t2=1;
            NoflagGo(&x, n, a);
            t1--;
        }
        else 
        {
            t2++;
            NoflagGo(&x, n, a);
        }
    }//先把主函数思路建立出来,简单分两种情况讨论下
    cout<<x;
    return 0;
}

工具:一个人数计数器,一个报数计数器,一个编号追踪器,一个flag(插旗)数组。

函数:编号追踪函数(令x前往下一个未标记的编号)。

思路:1.根据事情发展模拟主函数,理顺逻辑。

2.模块化思路,将任务分函数进行。