思路:如果是第1个数和第二个数,每次都将第一个数挪到最后一位,并将第一个数删掉;

如果是第3个数(每次都删除了数,所以这个数现在也在第一位),那就只删除第一个数

第一位处理:

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7 0(第一个数挪到第最后一位)

1 2 3 4 5 6 7 0(删除第一个数)

第二位处理:

1 2 3 4 5 6 7 0

1 2 3 4 5 6 7 0 1(第一个数挪到第最后一位)

2 3 4 5 6 7 0 1(删除第一个数)

第三位处理:

2 3 4 5 6 7 0 1

3 4 5 6 7 0 1(删除第一个数)

代码如下:

if __name__ == "__main__":
    while True:
        try:
            n = int(input())
            num = [i for i in range(n)]

            count = 0
            while len(num) > 1:
                count += 1
                if count != 3:
                    num.append(num[0])
                else:
                    count = 0
                del num[0]

            print(num[0])
        except:
            break