跳转至

约瑟夫环

题目描述

有n个人围城一个圈,按顺序排号号。然后从第一个人开始报数(从1到3报数),报到3的人退出圈子,然后继续从1到3报数,直到最后留下一个人游戏结束,问最后留下的是原来第几号。

输入描述

输入一个正整数

输出描述

输出最后留下的是原来的第几号

样例输入

5

样例输出

4

代码详解

展开查看
n = int(input())
ls = [1 for i in range(n)]
p = 0
while ls.count(1) > 1:
    cnt = 0
    while cnt < 3:
        if ls[p%n] == 1:
            cnt += 1
        p += 1
    ls [p%n -1] = 0
print(ls.index(1) + 1)

运行结果

展开查看
5
4