約瑟夫環(約瑟夫問題)是乙個數學的應用問題:
已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0~n-1,最後 結果+1即為原問題的解。
對於任意x人報數y
def
yosef
(x, y):if
not x or
not y:
return
0 res =
list
(range
(x))
i =0while
len(res)
>1:
i =(i+y-1)
%len
(res)
res.pop(i)
return res[0]
print
("輸入x")x=
int(
input()
)print
("輸入y")y=
int(
input()
)res = yosef(x, y)
print
(res)
結果例項
>>
>
====
====
====
====
=== restart: c:
/users/
86138
/documents/
223.py ==
====
====
====
====
=輸入x
100輸入y
1752
>>
>
Python 約瑟夫環
在這裡插入 片 約瑟夫環問題的起源來自猶太歷史學家約瑟夫和他的朋友以及39其餘的猶太人,總共41人為了躲避敵人,藏在乙個山洞中,39個猶太人決定寧願死也不被敵人抓到,於是決定自殺,所有人排成乙個圈,由第乙個人開始報數,每當數到3,就自殺。這個遊戲接著從自殺的位置開始,還是從1數到3。依次類推,約瑟夫...
python實現約瑟夫環
約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0 n 1,最後結果 1即...
python實現約瑟夫環
約瑟夫環問題的邏輯很簡單就是一群人圍成乙個圈指定從其中乙個人開始報數,指定報數到多少,報到這個數的人就出局,剩下的人從剛出局的人的位置的下乙個人繼續開始遊戲。看起來比文字描述直觀,我就直接上 了。def ysf sum,bsit,distance,survive sum總的人數,bsit報數開始的位...