第4章-17.猴子選大王 (20分)

一羣猴子要選新猴王。新猴王的選擇方法是:讓N只候選猴子圍成一圈,從某位置起順序編號爲1~N號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接着又從緊鄰的下一隻猴子開始同樣的報數。如此不斷循環,最後剩下的一隻猴子就選爲猴王。請問是原來第幾號猴子當選猴王?

輸入格式:

輸入在一行中給一個正整數N(≤1000)。

輸出格式:

在一行中輸出當選猴王的編號。

輸入樣例:

11
 

輸出樣例:

7
 
 1 # 猴子喫桃問題
 2 # Author: cnRick
 3 # Time  : 2020-3-27
 4 N = int(input()) #N是猴子的總數
 5 ls = [i for i in range(1,N+1)]
 6 
 7 ptr = 1 #從1開始報數,報數猴子的下標-1
 8 while len(ls)>1:
 9     ptr = ptr + 2
10     ptr = (ptr-1)%len(ls) + 1
11     del ls[ptr-1]
12 print(ls[0])

中M對這道題的官方討論鏈接:https://www.icourse163.org/learn/ZJU-1206456840?tid=1450395457#/learn/content?type=detail&id=1214738088&cid=1247847460

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