#16499:


freedom501999@gmail.com (帥氣魔方生)

學校 : 不指定學校
編號 : 88611
來源 : [39.8.203.54]
最後登入時間 :
2019-05-30 22:56:25
c519. 4. 幻方求解 -- 2017高雄市資訊學科能力複賽 | From: [27.52.77.116] | 發表日期 : 2019-01-07 13:17

此填法的規律如下: 

1. 設 a 是正整數,若 n 能整除 a,則區間 [ a+1, a+n ] 必在同一斜排上

    斜排定義為右上左下,依題目規則所填在同一斜排皆屬之

例: n = 5,[ 1, 5 ]、[ 6, 10 ]、[ 11, 15 ]、[ 16, 20 ]、[ 21, 25 ] 各組皆在各自的斜排上

2. 依規則所述,若右上已有數字,則往下填,此時填的數即是下一組的第一個數,可推得

    上一組第一個數往左一格往下兩格即為這組第一個數

例: n = 5,每組第一個數如下,雖然 11 位置: 第 5 列第 1 行,往左下變 第 7 列第 0 行

     列數超過減 5、行數不足加 5 ,即為 16 的位置: 第 2 列第 5 行

x    x    1    x    x

x    x    x    x   16

x    6    x    x    x

x    x    x   21   x

11  x    x    x    x

3. 每組第 k 個數,恰為自第一個數開始往右上算的第 k 個位置 (計算包含第一個數)

例: n = 5,以 11 ~ 15 為例,15 位置恰為從 11 開始算起第 5 個

Sol : 以 1 的位置當起點,用規律算 i、j,答案瞬間即出

PS : 用陣列索引的方式算 i、j,最後再加一,比較好算

PS2 : 上面規律變程式碼,應該不難吧,就不說細節了

 
ZeroJudge Forum