一群猴子要選新猴王。新猴王的選擇方法是:讓N只候選猴子圍成一圈,從某位置起順序編號為1~N號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接着又從緊鄰的下一只猴子開始同樣的報數。如此不斷循環,最后剩下的一只猴子就選為猴王。請問是原來第幾號猴子當選猴王?
輸入格式:
輸入在一行中給一個正整數N(≤1000)。
輸出格式:
在一行中輸出當選猴王的編號。
代碼如下:(官方代碼)
#!/usr/bin/python # -*- coding: utf-8 -*- N=int(input()) ls=[i for i in range(1,N+1)] step=2 #步長 ptr=1 while len(ls) > 1: #ptr表示列表中第幾個元素,沒有第0個元素,只有下標為0的元素 ptr=(ptr+step-1)%len(ls)+1 #ptr 是 下一個開始的位數 del ls[ptr-1] print(ls[0])
這個程序的難點就在於ptr=(ptr+step-1)%len(ls)+1這句代碼,說實話,我現在都不是特別特別明白。
下面是官方討論鏈接,大家可看看。
讀書和健身總有一個在路上