一群猴子要選新猴王,新猴王的選擇方法是:讓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這句代碼,說實話,我現在都不是特別特別明白,
下面是官方討論鏈接,大家可看看,
https://www.icourse163.org/learn/ZJU-1206456840?tid=1450395457#/learn/content?type=detail&id=1214738088&cid=1247847460
讀書和健身總有一個在路上
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/156192.html
標籤:Python
上一篇:一、Python爬蟲-認識爬蟲
下一篇:交換排序之冒泡排序(java)
