您的位置:首页 > 其它

codeforces 12E - Start of the session

2013-07-15 11:22 246 查看
E. Start of the season

time limit per test
2 seconds

memory limit per test
256 megabytes

input
standard input

output
standard output

Before the start of the football season in Berland a strange magic ritual is held. The most experienced magicians have to find a magic matrix of the size
n × n (n is even number). Gods will never allow to start the championship without it. Matrix should contain integers from
0 to n - 1, main diagonal should contain only zeroes and matrix should be symmetric. Moreover, all numbers in each row should be different. Magicians are very tired of the thinking process,
so they ask you to write a program to find such matrix.

Input
The first line contains one integer n (2 ≤ n ≤ 1000),
n is even.

Output
Output n lines with
n numbers each — the required matrix. Separate numbers with spaces. If there are several solutions, output any.

Sample test(s)

Input
2


Output
0 1
1 0


Input
4


Output
0 1 3 21 0 2 3
3 2 0 1
2 3 1 0
/*
这题我真不会,看了别人的解题报告才懂
4,每行位移,最后列补0
1 2 3 0
2 3 1 0
3 2 1 0
1 2 3 0
然后交换a[i][i],a[i][n-1]
最后a[n-1][i]=a[i][n-1]
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 1010
int a

;
int main(){
int i,j,k,n;
while(~scanf("%d",&n)){
for(i=0;i<n;i++)a[0][i]=i+1;
for(i=1;i<n;i++){
for(j=0;j<n;j++){
k=i+j;
if(k>=n-1)k=k-n+1;
a[i][j]=a[0][k];
}
}
for(i=0;i<n;i++){
a[n-1][i]=a[i][n-1]=a[i][i];
a[i][i]=0;
}
for(i=0;i<n;i++){
printf("%d",a[i][0]);
for(j=1;j<n;j++)printf(" %d",a[i][j]);printf("\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐