python实现小孩报数问题

2018-04-16  本文已影响0人  fishandcat

N个小孩围成一个圈,由第1个小孩开始报数,报数为M的人出局,请问最后出局的小孩是第几个


图示

代码如下:

def baoshu(n, m):
    """
    :param n: n个人
    :param m: 报数为m出列
    :return:
    """
    baoshu = 0
    child = [i for i in range(1, n+1)]    #给小孩编号
    while len(child) > 1:
        baoshu += 1
        child.append(child.pop(0))   #将list第一个数放到list的末尾,将list围成一个圈
        if baoshu == m:           #判断报数与M是否相等,相等则移除该小孩
            baoshu = 0
            print child.pop()
    print child

if __name__ == '__main__':
    baoshu(100, 10)

上一篇 下一篇

猜你喜欢

热点阅读