【题目描述】
N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M的人出圈;…输出依次出圈的人的编号。
【输入】
输入N和M。
【输出】
输出一行,依次出圈的人的编号。
【输入样例】
8 5
【输出样例】
5 2 8 7 1 4 6 3
【提示】
【数据范围】
对于所有数据,2≤N,M≤1000。

n, m = map(int, input().split())
lst = [i for i in range(1, n + 1)]
count = 0
index = -1
while 1:
    index = (index + 1) % len(lst)
    count += 1
    if count % m == 0:
        print(lst[index], end=' ')
        lst.pop(index)
        index -= 1
    if len(lst) == 0:
        break

真要说难吧,也没有那么难,但是第一时间确实有点不太会写,其实就类似环形数组吧,只需要对索引取模就可以保证索引在有效范围内,然后用count计数,到m的倍数就把这个位置的数删除掉就可以了,但是删除的时候要让index回退一个位置,不然删除之后后面的元素会填充在这里,等于漏了一个元素,就会出问题了。