python報數退出圈子,問哪一號最後留下來

有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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章