C. Magic Grid

time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Let us define a magic grid to be a square matrix of integers of size n×n, satisfying the following conditions.

  • All integers from exactly once.
  • Bitwise XOR of all elements in a row or a column must be the same for each row and column.

You are given an integer n×n.

Input

The only line of input contains an integer 4.

Output

Print a magic grid, i.e. i-th row of the grid.

If there are multiple answers, print any. We can show that an answer always exists.

Examples
input
Copy
4
output
Copy
8 9 1 13
3 12 7 5
0 2 4 11
6 10 15 14
input
Copy
8
output
Copy
19 55 11 39 32 36 4 52
51 7 35 31 12 48 28 20
43 23 59 15 0 8 16 44
3 47 27 63 24 40 60 56
34 38 6 54 17 53 9 37
14 50 30 22 49 5 33 29
2 10 18 46 41 21 57 13
26 42 62 58 1 45 25 61
Note

In the first example, XOR of each row and each column is 13.

In the second example, XOR of each row and each column is 60.

 

 题意:构造一个这样的矩阵:第 i 行的异或和==第 i 列的异或和

 

题解:若已知一个满足题意的矩阵,对这个矩阵的每一个数加上一个4的倍数依然满足题意,又因为n是4的倍数,所以不断用这样的4*4矩阵凑成一个n*n的矩阵即可

 

#include<iostream>
#include<algorithm>
using namespace std;
int a[1024][1024];
int main()
{
    int n,cnt=0;
    cin>>n;
    for(int i=1;i<=n;i=i+4)
    {
        for(int j=1;j<=n;j=j+4)
        {
            for(int x=0;x<4;x++)
            {
                for(int y=0;y<4;y++)
                {
                    a[i+x][j+y]=cnt++;
                }
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(j==1)
                cout<<a[i][j];
            else
                cout<<' '<<a[i][j];
        }
        cout<<endl;
    }
    return 0;
}

 

相关文章:

  • 2021-11-27
  • 2021-09-29
  • 2022-12-23
  • 2021-12-14
  • 2021-08-19
  • 2021-10-20
  • 2021-12-26
  • 2022-03-06
猜你喜欢
  • 2022-12-23
  • 2021-11-17
  • 2022-12-23
  • 2022-03-09
  • 2021-10-12
相关资源
相似解决方案