时间限制 内存限制
1000 ms 65536 KB

# 题目描述

给出一个正整数 nn,请输出一个 2n×2n2n \times 2n 大小的 X 形状的图案,由字符 /\ 和空格构成。

此外,要求在 X 形图案外围用一圈字符 % 包围,字符 % 包围圈和 X 形图案间用一圈空格隔开。

具体见样例。

# 输入格式

一行一个正整数 nn,保证 1n301 \le n \le 30

# 输出格式

输出共 2n+42n + 4 行,每行共 2n+42n + 4 个字符,表示输出图案。

其中,中央的 2n2n2n2n 列为 X 形图案,向外一圈为空格,最外一圈为字符 %

# 输入样例 1

2

# 输出样例 1

%%%%%%%%
%      %
% \  / %
%  \/  %
%  /\  %
% /  \ %
%      %
%%%%%%%%

# 输入样例 2

5

# 输出样例 2

%%%%%%%%%%%%%%
%            %
% \        / %
%  \      /  %
%   \    /   %
%    \  /    %
%     \/     %
%     /\     %
%    /  \    %
%   /    \   %
%  /      \  %
% /        \ %
%            %
%%%%%%%%%%%%%%

# 题解:模拟

直接按照题意模拟即可。

时间复杂度:O(n2)O(n^2)

参考代码:

#include <stdio.h>
int n;
int main()
{
    // freopen("G.in", "r", stdin);
    // freopen("G.out", "w", stdout);
    scanf("%d", &n);
    for (int i = 1; i <= (n << 1) + 4; ++ i)
        putchar('%');
    
    printf("\n%%");
    for (int i = 1; i <= (n << 1) + 2; ++ i)
        putchar(' ');
    
    puts("%");
    for (int i = 1; i <= n; ++ i)
    {
        printf("%% ");
        for (int j = 1; j < i; ++ j)
            putchar(' ');
        
        putchar('\\');
        for (int j = 1; j <= ((n - i) << 1); ++ j)
            putchar(' ');
        
        putchar('/');
        for (int j = 1; j < i; ++ j)
            putchar(' ');
        puts(" %");
    }
    for (int i = 1; i <= n; ++ i)
    {
        printf("%% ");
        for (int j = 1; j <= n - i; ++ j)
            putchar(' ');
        
        putchar('/');
        for (int j = 1; j <= ((i - 1) << 1); ++ j)
            putchar(' ');
        
        putchar('\\');
        for (int j = 1; j <= n - i; ++ j)
            putchar(' ');
        puts(" %");
    }
    putchar('%');
    for (int i = 1; i <= (n << 1) + 2; ++ i)
        putchar(' ');
    
    puts("%");
    for (int i = 1; i <= (n << 1) + 4; ++ i)
        putchar('%');
    
    return 0;
}