列表

详情


NC15384. 数字方阵

描述

 总是对数字的神秘感感到好奇。这次,他在纸上写下了  个从 的数字,并把这些数字排成了 的方阵。他惊奇地发现,这个方阵中每行、每列和两条主对角线上的数字之和都不一样。他想要更多的方阵,但他再写不出来了。于是他㕛跑来找你,请你给他一个边长为  的满足上述性质的方阵。

输入描述

输入共一行,一个整数  ,意义同题面描述。

输出描述

输出共  行,每行  个整数,表示答案方阵。
输出任意一种可行方案即可。

示例1

输入:

3

输出:

1 2 3
8 9 4
7 6 5

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang 3.9) 解法, 执行用时: 93ms, 内存消耗: 7012K, 提交时间: 2019-04-17 09:39:25

int main()
{
	int n;
	scanf("%d",&n);
	int s=1;
	int m=n*n-n+1;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n-1;j++)
		{
			printf("%d ",s++);
		}
		printf("%d\n",m++);
	}
	return 0;
}

C++14(g++5.4) 解法, 执行用时: 135ms, 内存消耗: 7040K, 提交时间: 2020-07-02 15:38:09

#include<cstdio>
int main(){
    int n;
    scanf("%d",&n);
    int l=1,r=(n-1)*n;
    for(int i=0;i<n;i++,printf("%d\n",++r))
    for(int j=1;j<n;printf("%d ",l++),j++);
}

C++11(clang++ 3.9) 解法, 执行用时: 109ms, 内存消耗: 6912K, 提交时间: 2018-05-07 21:50:48

#include<cstdio>
int main(){
int n;
scanf("%d",&n);
int l=1,r=(n-1)*n;
for(int i=0;i<n;i++,printf("%d\n",++r))
for(int j=1;j<n;printf("%d ",l++),j++);
}

Python(2.7.3) 解法, 执行用时: 214ms, 内存消耗: 9700K, 提交时间: 2018-04-21 22:24:17

n = input()
for i in xrange(n):
    t = (n - 1) * i
    print ' '.join(map(str, range(t + 1, t + n))), n * (n - 1) + i + 1

Python3 解法, 执行用时: 267ms, 内存消耗: 11300K, 提交时间: 2022-01-19 18:49:39

n=int(input())
for i in range(n):
    print(' '.join(map(str,range(n*i-i+1,n*i-i+n))),n*(n-1)+i+1)

上一题