C++代码:
#include <stdio.h>
bool buf[7][729+10][729+10]={false};
int off[5][2]={0,0,2,0,1,1,0,2,2,2};
int main()
{
int n;
buf[0][0][0]=true;
int len=1;
int offx,offy;
for(int i=1;i<7;i++)
{
for(int m=0;m<=4;m++)
{
offx=len*off[m][0];offy=len*off[m][1];
for(int j=0;j<len;j++)
for(int k=0;k<len;k++)
if(buf[i-1][j][k])buf[i][j+offx][k+offy]=true;
}
len=len*3;
}
while(scanf("%d",&n)!=EOF&&n>0)
{
int tmp=n;
len=1;
n=n-1;
while(tmp>1){len*=3;tmp--;}
for(int i=0;i<len;i++)
{
for(int j=0;j<len;j++)
{
if(buf[n][i][j])printf("X");
else printf(" ");
}
printf("\n");
}
printf("#\n");
}
return 0;
}