#include<stdio.h>
#include<string.h>
char a[25][45];
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
memset(a,' ',sizeof(a));
int k,level;
scanf("%d",&k);
if(k==1) level=1;
else{
for(int i=1;;i++){
if(k<=(i+1)*(i+1)&&k>i*i){
level=i+1;
break;
}
}
}
a[0][(level)*2+0]='*';
a[0][(level)*2+1]='\0';
for(int i=1;i<level;i++){
for(int j=0;j<i;j++){
a[i*2-1][(level-i+1)*2+j*4-1]='/';
a[i*2-1][(level-i+1)*2+j*4+1]='\\';
}
a[i*2-1][level*2+i*2]='\0';
a[i*2][(level-i)*2]='*';
for(int j=0;j<i;j++){
a[i*2][(level-i+1)*2+j*4]='-';
a[i*2][(level-i+2)*2+j*4]='*';
}
a[i*2][level*2+1+i*2]='\0';
}
int left=k-(level-1)*(level-1);
int time=(left+1)/2;
a[level*2-1][1]='/';
int j=1;
while(j<=left){
a[level*2-1][1+j*2]='\\';
j++;
a[level*2-1][1+j*2]='/';
j++;
}
a[level*2-1][(left+1)*2]='\0';
a[level*2][0]='*';
for(int j=0;j<time;j++){
a[level*2][2+j*4]='-';
a[level*2][4+j*4]='*';
}
a[level*2][time*4+1]='\0';
for(int i=0;i<=level*2;i++) printf("%s\n",a[i]);
//printf("%d\n",level);
//printf("剩余个数%d\n",left);
//printf("底部次数%d\n",time);
}
return 0;
}
XTU OJ 1397 Patchouli的金字塔
最新推荐文章于 2025-08-05 20:58:53 发布