有15个人围成一圈,顺序编号,从第一个人开始报数,报到3的人退出圈子,求最后一个是开始时的第几号?
题目给出了具体的数值,若是m,n值不定,可增加输入
def baoshu ( n, m ):
# 初始化一个列表表示所有人,值为他们的编号
people = list ( range (1, n + 1 ))
# 索引用于跟踪当前要数的人
index = 0
# 不断移除人,直到只剩下一个人
while len ( people ) > 1:
# 计算下一个要移除的人的索引
index = ( index + m - 1 ) % len ( people )
# 移除该人
people .pop ( index )
# 返回最后剩下的那个人的编号
return people [0]
# 调用函数,n=15,m=3
n = 15
m = 3
last_person = baoshu ( n, m )
print ( last_person )
输出是5