C. Magic Odd Square
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Find an n × n matrix with different numbers from 1 to n2, 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 n2. 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 76 9 8
题意:让你写出一个矩阵使得它的行、列、对角线上的和为奇数
#include<cstdio> #include<cstring> int main() { int n; int map[50][50]; while(scanf("%d",&n) != EOF) { memset(map,0,sizeof(map)); if(n == 1) { printf("1\n"); continue; } else { int k = 1; int f = (n + 1) / 2; int x = 0 , y = 0; for(int i = 1 ; i <= n ; i++) { if(i <= f) { x = f - i + 1; y = f + i -1; } else { x = i - f + 1; y = n - i + f; } for(int j = x ; j <= y ; j++) { map[i][j] = k; k += 2; } } } int l = 2; for(int i = 1 ; i <= n ; i++) for(int j = 1 ; j <= n ; j++) { if(!map[i][j]) { map[i][j] = l; l += 2; } printf("%d",map[i][j]); if(j != n) printf(" "); else printf("\n"); } } return 0; }