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;
    }
};