题目描述
ADA是个特能折腾的小女孩,她的爸爸有时候想清净一点都不成。最近ADA迷上画图,她爸爸心生一计,让她去画一个正方形,正方形边长n为3的t次幂 1 <= t <= 7。
画图规则如下:
(1)第一个画的正方形其边以大写字母’A’填充,正方形里面不需要填充。
(2)如果规则一画的正方形边长大于3,则将其分成边长为n/3的9个小正方形,每个小正方形继续画图,如果画的地方如果已经存在字符,则保持不变。如果不存在字符,则一律以大写字母’B’填充。和规则二相同的地方是,只填充边,不填充里面部分。
(3)如果规则二得到的9个小正方形边长依然大于3,对这9个小正方形重复规则二的动作,只是填充字符一律使用’C ’, 这样能得到81个小正方形. 如果81个小正方形的边长依然不为3, 重复上面类似行为(注意填充字符变成下一个大写字母),直至剖分成的小正方形边长为3.
这个问题对ADA来说显然太难了,但是我想你行的,试一试吧.
输入
第一行是一个整数T,表示有多少组数据。
随后有T行,每一行包括一个整数n,代表刚开始画的正方形边长.
输出
每个整数n对应一个正方形输出,正方形中空的位置用空格符号.如果有多组测试数据,相邻两组之间有一空行隔开,注意最后一组后面不要有空行.
样例输入
2 3 27
样例输出
AAA A A AAA AAAAAAAAAAAAAAAAAAAAAAAAAAA A CC CC BB CC CC BB CC CC A ACCCCCCCBBCCCCCCCBBCCCCCCCA ACCCCCCCBBCCCCCCCBBCCCCCCCA A CC CC BB CC CC BB CC CC A ACCCCCCCBBCCCCCCCBBCCCCCCCA ACCCCCCCBBCCCCCCCBBCCCCCCCA A CC CC BB CC CC BB CC CC A ABBBBBBBBBBBBBBBBBBBBBBBBBA ABBBBBBBBBBBBBBBBBBBBBBBBBA A CC CC BB CC CC BB CC CC A ACCCCCCCBBCCCCCCCBBCCCCCCCA ACCCCCCCBBCCCCCCCBBCCCCCCCA A CC CC BB CC CC BB CC CC A ACCCCCCCBBCCCCCCCBBCCCCCCCA ACCCCCCCBBCCCCCCCBBCCCCCCCA A CC CC BB CC CC BB CC CC A ABBBBBBBBBBBBBBBBBBBBBBBBBA ABBBBBBBBBBBBBBBBBBBBBBBBBA A CC CC BB CC CC BB CC CC A ACCCCCCCBBCCCCCCCBBCCCCCCCA ACCCCCCCBBCCCCCCCBBCCCCCCCA A CC CC BB CC CC BB CC CC A ACCCCCCCBBCCCCCCCBBCCCCCCCA ACCCCCCCBBCCCCCCCBBCCCCCCCA A CC CC BB CC CC BB CC CC A AAAAAAAAAAAAAAAAAAAAAAAAAAA
#include<stdio.h> char a[2190][2190]; int main() { int n, b,d,f,e,i,j,k; char c[] = "ABCDEFG"; scanf("%d",&n); while (n--) { scanf("%d",&b); // 输入的边长 for (i = 0; i <b; i++) { for (j = 0; j <b; j++) { a[i][j]=' '; } } for (i = 0,k=0; i < b; i++) { a[0][i] =c[k]; a[i][0] = c[k]; a[b - 1][i] =c[k]; a[i][b - 1] = c[k]; } d = b; e = b; k = 1; f = b / 3; while (e > 3) { for (i = 0; i < b; i++) { for (j = 0; j < b; j++) { if (i%f ==0) { if (a[i][j]==' ') a[i][j] = c[k]; if (a[i - 1][j] == ' ') a[i - 1][j] = c[k]; } if (j%f == 0) { if (a[i][j]==' ') a[i][j] = c[k]; if (a[i][j-1]==' ') a[i][j - 1] = c[k]; } } } e = e / 3; f = f / 3;k++; } for (i = 0; i < d; i++) { for (j = 0; j < d;j++) { printf("%c",a[i][j]); } printf("\n"); } printf("\n"); } return 0; }