#include <iostream>//我也是第一次写这种题,看了博主讲解,才稍微会一点//
using namespace std;
int main()
{
int a[111];//首先我们先创建一个比较大的数组
int n,k,m;
cin>>n>>k>>m;
for(int i = 0;i<n;i++){//全部初始化为1,嗯对,,你往后看就知道了为什么了
a[i]=1;
}
int step = 1;//计载步长即我报数报到第几个了
int counter = n;//计数,继续往后看
int i = k;//这个是我们开始报数的人的位置
while(counter>0){
if(a[i]==1&&step==m){//如果这个人还没出队并且我已经到那个我们已经报到m了
a[i]=0;//我们就令该位置的人的值为1,表示这个位置的人已经出队了
step=1;//重新计算我报数报到的位置
counter--;//每次出队一人,我们就少一人
if(counter==1){//如果还剩下最后一个人
for(int j =0;j<n;j++){
if(a[j]==1){
cout<<j;//我们就用循环输出其位置
return 0;
}
}
}
}
else if(a[i]==1&&step!=m){//如果我step还没到m我们就继续报数,即step++;
step++;
}
if(i==n-1){//每次报数报到m我们就要从头开始继续报数,i就是数组的下标嘛,,这样就能达到一种人环一圈报数的效果,反正对于我们萌新来说,,记住这个大致的模板就对了,,学到后面我们就理解了,或者是说我们用多了这种思想就会了//
i = 0;
}
else i++;
}
return 0;//貌似没有这个也没太大关系,反正养成好习惯就对了,如果学有所获,请点点赞谢谢!
}