python实现小孩报数问题

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

python实现小孩报数问题
文章图片
图示 【python实现小孩报数问题】代码如下:

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 childif __name__ == '__main__': baoshu(100, 10)

    推荐阅读