Problem1372--n-魔方阵

1372: n-魔方阵

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 96  Solved: 14
[Submit] [Status] [Web Board] [Creator:]

Description

所谓“n-魔方阵”,指的是使用1〜n2共n2个自然数排列成一个n×n的方阵,其中n为奇数;该方阵的每行、每列及对角线元素之和都相等,并为一个只与n有关的常数,该常数为n×(n2+1)/2。

例如5-魔方阵,其第一行、第一列及主对角线上各元素之和如下:
  • 第一行元素之和:17+24+1+8+15=65
  • 第一列元素之和:17+23+4+10+11=65
  • 主对角线上元素之和:17+5+13+21+9=65

而 n×(n2+1)/2=5×(52+1)/2=65 可以验证,5-魔方阵中其余各行、各列及副对角线上的元素之和也都为65。

假定阵列的行列下标都从0开始,则魔方阵的生成方法为:在第0行中间置1,对从2开始的其余n2-1个数依次按下列规则存放:
(1) 假定当前数的下标为(i,j),则下一个数的放置位置为当前位置的右上方,即下标为(i-1,j+1)的位置。
(2) 如果当前数在第0行,即i-1小于0,则将下一个数放在最后一行的下一列上,即下标为(n-1,j+1)的位置。
(3) 如果当前数在最后一列上,即j+1大于n-1,则将下一个数放在上一行的第一列上,即下标为(i-1,0)的位置。
(4) 如果当前数是n的倍数,则将下一个数直接放在当前位置的正下方,即下标为(i+1,j)的位置。

Input

3

Output

8  1  6
3  5  7
4  9  2

Sample Input

5

Sample Output

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

HINT

模魔方输出格式参考
for(i=0; i<n; i++)
    {
       
        for(j=0; j<n; j++)
        {
            printf("%3d", mtrx[no]);
            no++;
        }
    }


Source/Category

 

[Submit] [Status]