开发者社区> 问答> 正文

有n个人围成一圈,顺序排号。从第一个人开始报数,凡报到3的人退出圈子,问最后留下的是原来第几号的那位

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

展开
收起
珍宝珠 2019-11-19 17:17:30 4147 0
2 条回答
写回答
取消 提交回答
  • 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))
    
    2020-02-11 20:39:01
    赞同 展开评论 打赏
  • #!/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
    
    2019-11-19 17:17:45
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载