公式

B - Draw Frame 解説 by MMNMM


マス \((i,j)\) が端にある必要十分条件は、次のいずれかが成り立つことです。

  • \(i=1\)
  • \(i=H\)
  • \(j=1\)
  • \(j=W\)

あとは、これを使って \(H\times W\) 個の文字を決め、出力すればよいです。

実装例は以下のようになります。

#include <iostream>
using namespace std;

int main() {
    int H, W;
    cin >> H >> W;

    for (int i = 0; i < H; ++i) {
        for (int j = 0; j < W; ++j) {
            if (i == 0 || i == H - 1 || j == 0|| j == W - 1) { // 端のマスなら
                cout << '#'; // # を
            } else { // そうでなければ
                cout << '.'; // . を出力
            }
        }
        cout << endl; // 改行する
    }

    return 0;
}
H, W = map(int, input().split())

for i in range(H):
    for j in range(W):
        if i == 0 or i == H - 1 or j == 0 or j == W - 1: # 端のマスなら
            print('#', end='') # # を
        else: # そうでなければ
            print('.', end='') # . を出力
        print('')

投稿日時:
最終更新: