2019牛客多校第八场C:CDMA(构造 + 思维)_i++


场上死活构造不出来,然后看了题解之后,明白了。题目中给了 2019牛客多校第八场C:CDMA(构造 + 思维)_i++_02

#include<bits/stdc++.h>
using namespace std;
int arr[1050][1050];
int main()
{
    arr[1][1] = 1;
    arr[1][2] = 1;
    arr[2][1] = 1;
    arr[2][2] = -1;
    int n;
    cin >> n;
    for(int k = 2;k < n; k *= 2)
    {
        for(int i = 1;i <= k; i++)
        {
            for(int j = 1;j <= k; j++)
            {
                arr[i + k][j] = arr[i][j + k] = arr[i][j];
                arr[i + k][j + k] = -arr[i][j];
            }
        }
    }
    for(int i = 1;i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
            cout << arr[i][j] << " ";
        puts("");
    }
    return 0;
}