一个经典的问题: 若干个人(设为N)围成一圈,每人依次编号,从第一个人开始报数,报到3的人出列,下一个人接着从1开始报数,周而复始,直到最后一人。 问最后这个人的编号是多少?
今天想着用Python把它实现出来,代码如下:
### 确定总人数
N = 4000
### 声明一个数组,并赋值为True
list = []
for i in range(N):
list.append(True)
### 声明变量,依次改变出列的人的状态(False),并加以记录(test)
temp = test = i = 0
while i < N:
## 检查状态,为True的达到3时更改其状态
if list[i] == True:
temp += 1
if temp == 3:
list[i] = False
temp = 0
test += 1
# 判断是否剩下最后一个人
if test == N - 1:
print("The index is: %d" % (list.index(True) + 1))
break
## 设置循环条件
i += 1
if i == N:
i = 0
<< The end >>