Find an n × n matrix with different numbers from 1 to n 2, so the sum in each row, column and both main diagonals are odd.
Input
The only line contains odd integer n (1 ≤ n ≤ 49).
Output
Print n lines with n integers. All the integers should be different and from 1 to n 2. The sum in each row, column and both main diagonals should be odd.
Examples
input
1
output
1
input
3
output
2 1 4
3 5 7
6 9 8
Solution:
#include <bits/stdc++.h> using namespace std; const int N = 1234; int a[N][N], b[N][N]; int main() { int n; scanf("%d", &n); a[0][0] = 1; int k = 1; while (k < n) { memset(b, 255, sizeof(b)); for (int i = 0; i < k; i++) { for (int j = 0; j < k; j++) { b[i + 1][j + 1] = a[i][j]; } } int ptr = k * k; for (int i = 1; i <= k; i++) { b[i][0] = (ptr += 2); b[i][k + 1] = (ptr += 2); } b[0][k / 2 + 1] = (ptr += 2); b[k + 1][k / 2 + 1] = (ptr += 2); ptr = k * k - 1; k += 2; for (int i = 0; i < k; i++) { for (int j = 0; j < k; j++) { a[i][j] = b[i][j]; if (a[i][j] == -1) { a[i][j] = (ptr += 2); } } } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (j > 0) { putchar(' '); } printf("%d", a[i][j]); } puts(""); } return 0; }
Related posts:
Strange Device
Kuroni and the Celebration
Maximum flow - Ford-Fulkerson and Edmonds-Karp
K-th order statistic in O(N)
Ehab the Xorcist
Quantifier Question
Snake
Amr and Pins
Résumé Review
Minkowski sum of convex polygons
Union of Doubly Linked Lists
Coprime Permutation
Finding articulation points in a graph in $O(N+M)$
New Year and Naming
Fibonacci-ish II
And Yet Another Bracket Sequence
Two Regular Polygons
Monopole Magnets
Cowboy Beblop at his computer
Frets On Fire
Interesting Subarray
Height All the Same
Long Path
Suffix Tree. Ukkonen's Algorithm
Euclidean algorithm for computing the greatest common divisor
Linear Congruence Equation
Ehab's REAL Number Theory Problem
Maze
The Values You Can Make
Hilbert's Hotel
The Maths Lecture
Nastya and Unexpected Guest