• C. Magic Grid 构造矩阵


    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×nn×n, satisfying the following conditions.

    • All integers from 00 to (n21)(n2−1) inclusive appear in the matrix 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 nn which is a multiple of 44. Construct a magic grid of size n×nn×n.

    Input

    The only line of input contains an integer nn (4n10004≤n≤1000). It is guaranteed that nn is a multiple of 44.

    Output

    Print a magic grid, i.e. nn lines, the ii-th of which contains nn space-separated integers, representing the ii-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 1313.

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

     题意:构造一个这样的矩阵:第 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;
    }
  • 相关阅读:
    laravel吐槽系列之一
    每日晨读_20140924
    技术晨读_2014_9_1
    大话胖model和瘦model
    大话PHP缓存头
    vim黏贴自动增加tab的毛病
    Laravel学习
    郑捷2017年电子工业出版社出版的图书《NLP汉语自然语言处理原理与实践》
    delete
    NLP知识结构概述
  • 原文地址:https://www.cnblogs.com/-citywall123/p/11575052.html
Copyright © 2020-2023  润新知