PG1118 - Cuadrado Magico Grado 11

no tags 

En un pueblo hay un mago que sorprende a los niños dibujando en la arena cuadrados mágicos que tienen un número impar de filas y columnas y donde la suma de cada fila columna y diagonal es la misma e igual al número mágico M = n(n^2+1)/2. Lo que los sorprende aun más es que el cuadrado contiene los números naturales consecutivos empezando desde 1 hasta n^2.

Por ejemplo, los cuadrados que ha dibujado el mago de orden 3, 5 y 7 se muestran a continuación.

Cuadrado mágico de orden 3

  2   7   6

  9   5   1

  4   3   8

M=  3*(3^2+1)/2 = 15

 

Cuadrado mágico de orden 5

  9   3  22  16  15

  2  21  20  14   8

 25  19  13   7   1

 18  12   6   5  24

 11  10   4  23  17

M= 5*(5^2+1)/2 = 65

 

Cuadrado mágico de orden 7

20  12   4  45  37  29  28

 11   3  44  36  35  27  19

  2  43  42  34  26  18  10

 49  41  33  25  17   9   1

 40  32  24  16   8   7  48

 31  23  15  14   6  47  39

 22  21  13   5  46  38  30

M= 7*(7^2+1)/2 = 175

 

Lo que no saben los niños es que el mago utiliza el siguiente algoritmo para dibujar el cuadrado mágico.

Coloca el número 1 en la mitad de la última columna y cada nuevo consecutivo lo coloca en la casilla de la matriz que esta arriba y a la derecha de la casilla de la casilla actual. La matriz se considera “circular”; es decir, la columna a la derecha de la última se considera la primera (la columna más a la izquierda) y la fila encima de la primera se considera la última (la fila más abajo).  Si durante el proceso de llenado de la matriz, una entrada ha sido ocupada, el consecutivo se coloca a la izquierda de la casilla actual.

Con este método el mago puede dibujar cuadrados mágicos de orden —número de filas y columnas— impar pero no par.

Elabore un programa que lea una línea  así:

Input

de entrada con un número natural n impar

Output

y que produzca como salida varias líneas donde la primera contiene el número mágico M = n(n^2+1)/2 y las subsiguientes las filas del cuadrado mágico. Los números del cuadrado mágico se separan con un espacio.

Example

Input:
3

Output:

15

2   7   6

9   5   1

4   3   8

 

Input:
5
Output:

65

9   3  22  16  15

2  21  20  14   8

25  19  13   7   1

18  12   6   5  24

11  10   4  23  17



Added by:MaratónAFDM
Date:2018-10-08
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:C NCSHARP C++ 4.3.2 JAVA JULIA PYTHON PYPY3 PYTHON3