#include <iostream> using namespace std; char ori[10][10]; char ans[2][3000+10][3000+10]; int n, rows; //rows为当前ans中有效的行列数 void nextScale(int old){ int neww = 1 - old; int now_i=0, now_j=0; //新ans中的位置 for(int i=0; i<n; i++){ for (int j=0; j<n; j++){ if(ori[i][j]==' '){ for(int k=0; k<rows; k++) for(int l=0; l<rows; l++){ ans[neww][k+now_i][l+now_j] = ' '; } }else { for(int k=0; k<rows; k++) for(int l=0; l<rows; l++){ ans[neww][k+now_i][l+now_j] = ans[old][k][l]; } } now_j += rows; } now_j = 0; now_i += rows; } rows = now_i; } int main() { int scale; char tmp; // 换行符 while(1){ cin >> n; if(n==0) break; scanf("%c", &tmp); for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ scanf("%c", &ori[i][j]); ans[0][i][j] = ori[i][j]; } scanf("%c", &tmp); } cin >> scale; int old = 0; rows = n; // 依次进行放大,共放大scale次 for(int i=1; i<scale; i++){ nextScale(old); old = 1 - old; } for(int i=0; i<rows; i++){ for(int j=0; j<rows; j++){ cout << ans[old][i][j]; } cout << endl; } } return 0; } // 64 位输出请用 printf("%lld")