假设编号为0到n – 1,对于固定的k,定义f(n)为n个人组成的环最后一个出列的人,f(1) = 0,假设已经知道了f(n),当有n + 1个人的时候,第一个出列的人的编号一定是k – 1,然后剩下n个人了,我们已经知道n个人最后一个出列的人的编号,但是此时报数的人从第0个变成了第k个,所以此时最后一个出列的人就是(f(n) + k) % n,即f(n + 1) = (f(n) + k) % n,再把编号加1就是答案了。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, k;
cin