有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。
程序如下
n = int(input('please input the number of pe0ple\n'))
a = []
for j in range(n):
a.append(j+1)
print (a)
res1 = 0
'''
剩餘的個數爲上一波的長度 減去 這一波最後一個去掉的位置,
'''
while len(a)>1:
length = len(a)
rmv = 0 #記錄一次遍歷中去掉的個數
for i in range(length):
if (i+1+res1)%3 == 0:
a.remove(a[ i - rmv ]) #原來 i 對應的位置 即 現在的 i-rmv
rmv = rmv + 1
if i+4 > length: # 此時的 i 位置爲當前遍歷中最後一個去掉的 位置
#print (length,'===+++===', i)
res1 = length - i - 1
#print ('res1===', res1)
break
print (a)