参考文献
https://www.acwing.com/solution/content/33496/
C++ 代码
for (int i = 1, j = (n - 1) % m; i < n;) //i表示剩余人数,剩最后一人时用的是第(n-1)%m个数
这一行自己画一下样例很容易明白
j = (j + m - 1) % m; //循环倒退,妙。可用 if( -- j < 0) j = m - 1 代替
这个可以借助钟表想,假如下午1点要回到中午12点,那就是加12(也就是这里的m)减1