Official

B - ASCII Art Editorial by Nyaan


この問題の題名となっているアスキーアートとは、主に アスキーコードにある文字を利用してテキストで表現されたイラストのことをいいます。入力例 4 のような数十行に渡るイラスト表現は初期のインターネット掲示板で頻繁に用いられていました。参考 : Wikipedia

さて、この問題は数列を適切な手順で文字列に変換することで解くことができます。 C++ ではアスキーコードを利用する方法が簡単です。(参考:Wikipedia) アスキーコードを利用すると \(n\) 番目の大文字アルファベットは

char c = `A` + n - 1;

という式で求めることができます。この仕組みを理解したうえで、for-loop を利用して適切に数列を文字列に変換していけばこの問題を解くことができます。

  • 実装例(C++)
#include <iostream>
#include <string>
using namespace std;

int main() {
  int H, W;
  cin >> H >> W;
  for (int i = 0; i < H; i++) {
    string S(W, '.');
    for (int j = 0; j < W; j++) {
      int x;
      cin >> x;
      if (x != 0) S[j] = 'A' + x - 1;
    }
    cout << S << "\n";
  }
}

posted:
last update: