#include <stdio.h>
//可以用循环链表的数据结构来达到循环效果
//这里用数组模拟报数和出队的效果
int main() {
int n, k, m;
scanf("%d %d %d", &n, &k, &m);
int alive[100] = {0};//标记存活状态,初始化为0,后续赋值1
for (int i = 0; i < n; i++) {
alive[i] = 1;//初始状态所有人都存活
}
//人数,位置,报数的变量
int count = n;//存活人数,初始为n
int current = k;//当前报数的起始位置
int step = 0;//报数计数器
//实现模块
while (count > 1) {
//报数模块
if (alive[current]) {
step++;//如果这个人还活者++报一下数
if (step == m) { //判断需不需要淘汰
alive[current] = 0;
count--;//存活人数减1
step = 0;//重置报数器
}
}
//%n是为了达到循环的效果
current = (current + 1) % n;//循环遍历,围成一圈
//太妙了
}
//找到最后存活的人
for (int i = 0; i < n; i++) {
if (alive[i]) {
printf("%d", i);
break;
}
}
return 0;
}