2 条题解

  • 0
    @ 2026-8-21 9:27:44
    #include<bits/stdc++.h>
    using namespace std;
    void solve(int m) {
        int n = 1 << m;
        vector<vector<int>> table(n, vector<int>(n, 0));
        for (int i = 0; i < n; ++i) {
            table[i][0] = i + 1;
        }
        for (int step = 1; step < n; step <<= 1) {
            for (int i = 0; i < n; i += 2 * step) {
                for (int j = 0; j < n; j += 2 * step) {
                    for (int r = 0; r < step; ++r) {
                        for (int c = 0; c < step; ++c) {
                            table[i + step + r][j + step + c] = table[i + r][j + c];
                        }
                    }
                    for (int r = 0; r < step; ++r) {
                        for (int c = 0; c < step; ++c) {
                            table[i + r][j + step + c] = table[i + step + r][j + c];
                        }
                    }
                }
            }
        }
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                cout<<table[i][j];
                if (j<n-1) cout << " ";
            }
            cout << "\n";
        }
    }
    int main() {
        int m;
        if (cin >> m) {
            solve(m);
        }
        return 0;
    }
    
    

    信息

    ID
    472
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    48
    已通过
    24
    上传者