Skip to content

Latest commit

 

History

History
45 lines (34 loc) · 1.22 KB

1036. 跟奥巴马一起编程.md

File metadata and controls

45 lines (34 loc) · 1.22 KB

【PAT B-1036】跟奥巴马一起编程

题意概述

本题要求你在屏幕上画一个正方形。

输入输出格式

输入在一行中给出正方形边长 N 和组成正方形边的某种字符 C,间隔一个空格。

输出由给定字符 C 画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的 50%(四舍五入取整)。

数据规模

$$3\le N\le20$$

算法设计

很容易知道这个图形在第 1 行和最后一行共输出 N 个 C 字符,而其他行只在第一列和最后一列输出字符 C。关键在于确定列数,如果行数为 N,列数为行数的一半且四舍五入取整,那么列数$col=\lfloor(N+1)/2\rfloor$。

C++代码

#include <bits/stdc++.h>
using namespace std;
using gg = long long;
int main() {
    gg ni;
    char ci;
    cin >> ni >> ci;
    for (gg i = 0; i < ni; ++i)
        cout << ci;
    cout << '\n';
    gg row = (ni + 1) / 2;
    for (gg i = 0; i < row - 2; ++i) {
        cout << ci;
        for (gg j = 0; j < ni - 2; ++j)
            cout << ' ';
        cout << ci << '\n';
    }
    for (gg i = 0; i < ni; ++i)
        cout << ci;
    return 0;
}