10941 - Joseph Problem II   

Description

實作Joseph problem.
假設一開始有N個人,編號1~N,
按照順序以順時針圍成一個圓圈。
遊戲開始時,編號1的人拿刀。
之後每一輪刀子會被往下傳M個人,
而當輪最後拿到刀子的人會將他的下一個人殺掉,
殺完後刀子會再傳給被殺的下一個人。
這樣一輪就算結束。
遊戲會進行許多輪,直到只剩下最後一個人。

範例1:N=5, M=2
第一輪:刀子傳給3號,4號被殺,刀子再傳給5號 (1 2 3 5)
第二輪:刀子傳給2號,3號被殺,刀子再傳給5號 (1 2 5)
第三輪:刀子傳給2號,5號被殺,刀子再傳給1號 (1 2)
第四輪:刀子傳給1號,2號被殺,最後1號存活。
範例2:N=4, M=3
第一輪:刀子傳給4號,1號被殺,刀子再傳給2號 (2 3 4)
第二輪:刀子傳給2號,3號被殺,刀子再傳給4號 (2 4)
第三輪:刀子傳給2號,4號被殺,最後2號存活。

Input

輸入第一行為一個數字T,代表測資的筆數。
接下來會有T筆測資,每一筆測資一行,
會有兩個數字N,M,數字間以空格區隔。
數字範圍:
T < 1000
0 < N <= 1000
0 < M <= 1000000
Hint: 需要處理M才不會超時。

Output

輸出一行數字,將每筆測資最後存活下來的人的編號加總。

Sample Input  Download

Sample Output  Download

Tags

韩永楷老师数据结构mooc MOOC



Discuss