有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 另譯為 生存者偏差 或 存活者偏差 駁斥的是一種常見的邏輯謬誤 謬誤 而不是 ...