C - 陣法魔/Cigam Square 解説 by potato167


\(N\) が偶数のとき

\(A_{i, j} = N(i - 1)+ j\) とします。

N = 4
 1  2  3  4
 5  6  7  8
 9 10 11 12
13 14 15 16

なぜこれでいいのかというと、行を \(1\) つ動いたときの変化量が \(N^2\) が、右端の列の総和と左端の列の総和の差が \(N(N - 1)\) よりも大きくなるからです。

\(N\) が奇数のとき

\(A_{i, j} = N(i - 1)+ j\) とします。

その後、\(m = \frac{(N - 1)}{2}\) として、\(A_{m + 1, 1}\)\(A_{m, N}\) を入れ替えます。

N = 5
 1  2  3  4  5
 6  7  8  9 11
10 12 13 14 15
16 17 18 19 20
21 22 23 24 25

真ん中の列と行の総和が一緒になってしまうため、微小な変化を加える必要があります。

投稿日時:
最終更新: