AcWing 3441. 重复者
原题链接
中等
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const int N = 3e3 + 10;
int t, n, m, k, l, r, op, x, y, q;
char mp[10][N][N];
string str;
void solve() {
while (cin >> n&&n) {
k = n;
getline(cin,str);
for (int i = 1; i <= n; i++) {
getline(cin, str);
for (int j = 1; j <= n; j++) {
mp[1][i][j] = str[j - 1];
}
}
cin >> q;
for (int p = 2; p <= q; p++) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int u = 1; u <= k; u++) {
for (int v = 1; v <= k; v++) {
if (mp[p - 1][i][j] == ' ') {
mp[p][u+(i-1)*k][v+(j-1)*k] = ' ';
} else {
mp[p][u+(i-1)*k][v+(j-1)*k] =
mp[1][u][v];
}
}
}
}
}
n *= k;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cout << mp[q][i][j];
}
cout << "\n";
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
solve();
return 0;
}