#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, k, m;
cin >> n >> k >> m;
vector<int> people(n);
for (int i = 0; i < n; ++i) {
people[i] = i; // 初始化人员编号0~n-1
}
int current = k; // 从编号k开始报数
while (people.size() > 1) {
// 计算需要移除的人的索引
int remove_idx = (current + m - 1) % people.size();
/*报数是环形的,超过数组长度需要从头开始。
% circle.size() 实现循环索引。*/
// 移除该人
people.erase(people.begin() + remove_idx);
// 更新下一轮开始的位置
if (people.size() > 0) {
current = remove_idx % people.size();
}
}
cout << people[0] << endl; // 输出最后剩下的大王编号
return 0;
}
经典!!

京公网安备 11010502036488号