class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 计算出旺仔哥哥最后会站在哪位小朋友旁边
* @param a int整型vector 第 i 个小朋友的数字是 a_i
* @param m int整型 表示旺仔哥哥的移动次数
* @return int整型
*/
int stopAtWho(vector<int>& a, int m) {
int n = a.size();
int p = 1; // 初始位置是1
for (int i = 1; i <= m; ++i) {
int current_pos = p - 1; // 转换为0开始
int step = a[current_pos]; // 读取移动步数
int new_pos = (current_pos - step) % n; // 直接减,负数出来不怕
if (new_pos < 0) { // 如果出来是负数,毕竟是个环,直接+环长就能去到应该在的位置!
new_pos += n; // 加过去刚好是0开始标准的下标
}
p = new_pos + 1; //换回1开始
}
return p;
}
};