2 条题解

  • 3
    @ 2026-8-21 9:21:36
    #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() {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int m;
        if (cin >> m) {
            solve(m);
        }
        return 0;
    }
    
    • 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;
      }
      
      
      • 1

      信息

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