有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
代码一:
n=int(input('输入数字:'))#输入数字
a=list(range(1,n+1))#建立一个列表,存放的是号码数
count=0;#构造一个全局变量,使得其储存每一位报的数
while len(a)>1:#循环直到列表只剩一个元素
b=a[:]#复制列表,为下一步删除做准备
for i in range(0,len(b)):#在len(b)的次数中,计数,并去除数
count+=1
if count%3==0:#如果报三,则去除a中的这一位
a.remove(b[i])
print(a[0])
代码二:def一个函数如下,实现以上功能
def who_remain(n):
lst = [i for i in range(1, n+1)]#构造一个列表
while n > 2:
lst.pop(2)#弹出第三个元素
before = lst[:2]#弹出后把前两个元素移到最后
lst = lst[2:]
lst.extend(before)
n = len(lst)#下一次循环就从原来的4号(即现在的1号开始)
print(lst[1])