#p1010. 习题1.2.6 神奇的幻方

习题1.2.6 神奇的幻方

题目描述

榕榕刚学了二维数组,他想到了在数学中学过的一个神奇的方阵(n*n的方阵,n为奇数,方阵中的数字为1——n^2),它的每行、每列与两条对角线,加起来的数字和都是相同的。榕榕觉得这个方阵很神奇,就尝试着去实现它,但做了很久都没做出来,他很沮丧,想请你帮忙输出这个方阵。

榕榕给你提供了如下构建方阵的方法:

1、第一个数字是1,写在第一行的正中间;

2、下一个数字,写在上一个数字的右上方;

      a、如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列;

      

      b、如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行;

      

      c、如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方。

输入格式

一个整数n(n保证为奇数)。

输出格式

按上方规则构造出的n*n的方阵,方阵中每个正整数占5列。

样例数据

input


5



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



数据规模与约定

n <=20。

时间限制:1s1 \text {s}

空间限制:256MB256 \text {MB}

温馨提示

每个数字占5列,有两种方法:

1、用setw(5),例如输出变量a的值时用:cout<<setw(5)<<a;

2、用printf进行输出,比如输出变量a的值可以写为:printf("%5d",a);

你可以任选一种方法按要求进行输出。