一群猴子要選新猴王。新猴王的選擇方法是:讓n只候選猴子圍成一圈,從某位置起順序編號為1~n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?
輸入格式:
輸入在一行中給乙個正整數n(≤1000)。
輸出格式:
在一行中輸出當選猴王的編號。
輸入樣例:
11輸出樣例:
7陣列裡去掉3的倍數
思路沒問題,但**一開始把自己繞得小暈
n =
int(
input()
)s =
[i for i in
range(1
,n+1)]
yu =
0#開始餘數預設0
while
len(s)
>1:
tmp,yu = yu,
(len
(s)+yu)%3
#去掉 餘數 加 3的倍數
for i in
range
(len
(s)-1,
-1,-
1):#尾部開始去
if(i+
1+tmp)%3
==0: s.remove(s[i]
)print
(s[0
])
大佬的思路,簡潔明瞭,先把第三個斃了,然後把前兩個移到最後面,重新組成乙個陣列
下面是抄的大佬**
n=
int(
input()
)s=[i for i in
range(1
,n+1)]
while
len(s)
>=3:
s = s[3:
]+s[0:
2]#去掉第三個,把前兩個移到最後面
s=s*
2#防止只有乙個情況,反正兩個乘了也沒毛病
print
(s[1
])
第4章 18 猴子選大王 20分
第4章 18 猴子選大王 20分 一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王...
python 第4章 18 猴子選大王 20分
一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?輸入在一行中給乙個正整數n 10...
第4章 17 猴子選大王 20分
一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?輸入在一行中給乙個正整數n 10...