有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
def report(num):
    lst = []
    for i in range(num):
        lst.append(i + 1)
    t = 0
    while len(lst) > 1:
        for x in range(3):
            t += 1
            if x == 2:
                t -= 1
                lst.pop(t)
            if t == len(lst):
                t = 0
    return lst[0]
if __name__ == '__main__':
    print(report(34))
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
if __name__ == '__main__':
    nmax = 50
    n = int(raw_input('请输入总人数:'))
    num = []
    for i in range(n):
        num.append(i + 1)
 
    i = 0
    k = 0
    m = 0
 
    while m < n - 1:
        if num[i] != 0 : k += 1
        if k == 3:
            num[i] = 0
            k = 0
            m += 1
        i += 1
        if i == n : i = 0
 
    i = 0
    while num[i] == 0: i += 1
    print num[i]
 
执行以上代码,输出结果:
$ python test.py 
请输入总人数:34
10