2016年8月7日 星期日

2016 闖關組 [Problem B11] Rotate around a circle

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=30527

這題用模擬會溢位,所以要用數學方法解,環狀位置要用餘數運算
我們可以遵循它的規律
D會員人數 K會員代號 N換位次數 L每次移動距離
ex:
會員代號偶數時
8 3 2 1
原本位置 4 3 2
第一次換位結果 6 3 4
第二次換位結果 8 3 6
推導出
((k+1)-(2*N*L))%D =>8//因為偶數逆時鐘所以減若為負數加上D

會員代號奇數時
8 4 2 1
原本位置 5 4 3
第一次換位結果 3 4 1
第二次換位結果 1 4 7
((k+1)+(2*N*L))%D =>1//奇數順時鐘所以加

最後當數字為0時要變成D

沒有留言:

張貼留言