比赛 随便比赛 评测结果 A
题目名称 分形 最终得分 100
用户昵称 郑霁桓 运行时间 0.242 s
代码语言 C++ 内存使用 5.04 MiB
提交时间 2024-08-27 20:27:20
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,p,t;
bool b[1005][1005],a[8][905][905];
void ff(long long x,long long y){
    for(int i=0;i<p;i++){
        for(int j=0;j<p;j++){
            b[x+i][y+j]=b[i][j];
        }
    }
    return;
}
void f(long long x){
    if(x==1){
        b[0][0]=1;
        p=t=1;
        a[1][0][0]=1;
        return;
    }
    f(x-1);
    t++;
    ff(0,2*p);
    ff(p,p);
    ff(2*p,0);
    ff(2*p,2*p);
    for(int i=0;i<3*p;i++){
        for(int j=0;j<3*p;j++){
            a[t][i][j]=b[i][j];
        }
    }
    p*=3;
}
int main(){
    freopen("fractal.in","r",stdin);
    freopen("fractal.out","w",stdout);
    f(7);
    while(1){
        scanf("%lld",&n);
        if(n==-1){
            return 0;
        }
        f(n);
        for(int i=0;i<p;i++){
            for(int j=0;j<p;j++){
                if(a[n][i][j]){
                    printf("X");
                }else{
                    printf(" ");
                }
            }
            printf("\n");
        }
        printf("-\n");
    }
    return 0;
}