shuoj-Josephus問題-dp數學

Description

1 N編號的個人按順時針方向圍坐一圈,每人持有一個密碼(正整數)做遊戲。遊戲開始時,以正整數m作爲報數上限值,從第一個人開始順時針方向自1開始順序報數,報到m時停止報數,報m的人出列,將其密碼作爲新的報數上限值,從其下一個人開始重新報數,如此下去,直至所有的人全部出列爲止。如N=7m=20,每個人的密碼依次是:3172484,則出列順序爲6147235要求最後一個出列的人的編號。

Input

有多組測試數據。每組有兩行,第1行有2個正整數nm,(nm<100),n表示人數,m表示開始時報數上限值,第2行有n個整數,一次表示第12,個人的密碼

Output

對每組測試數據,輸出最後一個人的編號。

Sample Input

7 203 1 7 2 4 8 4

Sample Output

5

題解::
本題直接模擬很簡單,但是隻是模擬還是不夠的。
我們還可以通過數學歸納的思想進行推導。


數學推導:
前提:編號從0開始。
首先 n = 1 時 ,最後的編號 r 爲0

然後假設當n = k-1 時假設最後的編號爲r

則當n = k 時,
首先淘汰的是第((m-1)%k)個人,然後我們以(m%k)爲基準,剩下k個人(最後剩下的爲以(m%k)爲基準的編號r)既最終剩下的人爲(m+r)%k

所以我們得到
r = 0
r = (m+r)%k k:1->n


發佈了61 篇原創文章 · 獲贊 53 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章