倖存者遊戲

2021-09-24 22:10:36 字數 1035 閱讀 1440

有n個同學圍成一圈,其id依次為1~n(n號挨著1號)。

現在從1號開始報數,第一回合報到m的人就出局,第二回合從出局的下乙個人開始報數,報到m2的同學出局。

以此類推,直到最後乙個回合報到mn−1的人出局,剩下最後乙個同學。

輸出這個同學的編號。

輸入格式

共一行,包含兩個整數n和m。

輸出格式

輸出最後剩下的同學的編號。

資料範圍

n≤15,m≤5

輸入樣例:

5 2輸出樣例:

5`

inn=

list

(map

(int

,input()

.split())

)n,m=inn[0]

,inn[1]

n=16

defhelper

(n,m)

: st=[0

]*n#初始狀態

p=1#當前一號位置

r=n#當前這一圈剩餘的人

i=1#迭代n

while i<=n:

#當前報到m的i次方,應該被刪掉

k=1#用k表示m的i次方,踢掉的人

for j in

range(1

,i+1):

k=k*m%r#超過一圈之後,求餘數

#當餘數為零的時候,表示剩餘最後乙個人

if k==0:

k=r#從下乙個位置開始,把第k個沒有被刪掉的人刪掉

while

true:if

not st[p]

: k-=1if

not k:

st[p]=1

# print(p)

break

p+=1if p > n:

p =1# print(p)

i +=

1 r -=

1return p

print

(helper(n,m)

)

倖存者遊戲

有n個同學圍成一圈,其id依次為1 n nn號挨著1號 現在從1號開始報數,第一回合報到m的人就出局,第二回合從出局的下乙個人開始報數,報到m2的同學出局。以此類推,直到最後乙個回合報到mn 1的人出局,剩下最後乙個同學。輸出這個同學的編號。輸入格式 共一行,包含兩個整數n和m。輸出格式 輸出最後剩...

倖存者偏差

二戰期間,盟軍需要對戰鬥機進行裝甲加厚,以提高生還率,但由於軍費有限,只能進行區域性公升級。那麼問題來了,究竟哪個部位最關鍵,最值得把裝甲加厚來抵禦敵方炮火呢?人們眾口不一,最後一致決定採用統計調查的方式來解決,即 仔細檢查每一駕戰鬥機返回時受到的損傷程度,計算出飛機整體的受彈狀況,然後根據大資料分...

關於倖存者偏差

在 擇天記說,經驗正在殺死你 一文中,我提到 聖後天海幽雪選擇修復星盤大陣來拯救大周 這一行為中,體現了倖存者偏差這一思維錯誤。有朋友提出質疑,為此我又找資料重新理解了一下。倖存者偏差 survivorship bias 另譯為 生存者偏差 或 存活者偏差 駁斥的是一種常見的邏輯謬誤 謬誤 而不是 ...