题目大概是:有10个人围成一圈,从第一个人数,数到3的人出局,问最后一个人是谁?
围成一圈,那就是无限循环,直至最后一个人,我们可以把10个人看做一个列表,每循环一次就把除3为0的数去除,下次再次循环时需要考虑上次循环的余数是0、1、2中的哪个。
具体代码如下
#!/usr/bin/env python
#-*-coding:utf-8-*-
n = 10
#创建初始列表person
for i in range(1,n+1):
person.append(i)
#设置俩个循环变量j和i
j = n
i = 0
#无限循环
while True:
#创建一个回收列表
dellist = []
if i = 0:
for i in range(1,j+1):
if i%3 == 0:
dellist.append(person[i-1])
if i = 1:
for i in range(2,j+2):
if i%3== 0:
dellist.append(person[i-2])
else:
for i in range(3,j+3):
if i%3 == 0:
dellist.append(person[i-3])
i = i%3
j =j-len(dellist)
for delperson in dellist:
person.remove(delperson)
if len(person) == 1:
break
print("Last person is %d"%person[0])