codeforces 12E - Start of the session
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 2
1 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[N][N]; 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; }
补充:Web开发 , 其他 ,