0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【丸亀製麺】ABC366 B で沼って4完が台無し【間違い探し】

Last updated at Posted at 2024-08-10

問題(間違い探し)

にわかに話題の AtCoder Beginner Contest 366 B問題
自信満々で出したC++コードが「WA」で慌てふためきました。

どこが間違っているでしょう?

B問題の大意

与えられた複数行の文字列を、縦書きに見えるよう出力せよ。

入出力の比較(出題ページ / 提出コード)

※この入力例1も「WA」が出ています。

- 入力 出力
公式の入出力例 image.png image.png
提出コードで
コードテスト
image.png image.png

提出したコード

▼関係ない行を削除して整理したもの

#include <bits/stdc++.h>
using namespace std;
#define OVERLOAD_REP(_1, _2, _3, name, ...) name
#define REP1(i, n) for (auto i = std::decay_t<decltype(n)>{}; (i) != (n); ++(i))
#define REP2(i, l, r) for (auto i = (l); (i) != (r); ++(i))
#define rep(...) OVERLOAD_REP(__VA_ARGS__, REP2, REP1)(__VA_ARGS__)

int main() {
  int n;
  cin >> n;

  int max = 0;
  int sl;

  vector<string> s(n);
  rep(i, n) {
    cin >> s[i];
    sl = s[i].length();
    if (max > sl) {
      rep(j, max - sl) { s[i].push_back('*'); }
    } else {
      max = sl;
    }
  }

  rep(i, max) {
    for (int j = n - 1; j >= 0; j--) {
      cout << s[j][i];
    }
    cout << endl;
  }
}

答え
















image.png
答え. 末尾に余計なスペースが入っていた
(ぜんぜん気付かなかった。。。)

言い訳と日記のコーナー(C++のcout仕様など)

C++ iostreamcoutは、文字列中のcharが格納されてない要素にアクセスすると、半角スペースを返すようです。
segmentation fault 等のエラーになるとかでもない様子。

▼検証用に色々出力したもの

int main() {
  vector<string> u();
  cout << u[0] << "←u[0]" << endl;
  cout << u[0][0] << "←u[0][0]" << endl;

  vector<string> u2(1);
  cout << u2[0] << "←u2[0]" << endl;
  cout << u2[0][0] << "←u2[0][0]" << endl;

  vector<string> s(3);
  s = {"Kamaage", "Udon", "Senmonten"};
  cout << s[0][5];
  cout << s[1][5];
  cout << s[2][5];
}

image.png

▼コードテストの標準出力を、手元のVSCodeに貼り付けたとき、末尾のスペースが消失するのに気づかなかったのもツラめでした
image.png

▼D問題解き終わったとき(22時09分)、ようやくB問題の「WA」の文字に気づき、何が違うのか分からず半泣きでWAを量産した様子がこちら
image.png

▼早めにD問題を提出できて「入緑に近づいたかも」とホクホクしてから一転、蓋を開けたらレート下がってたのが結構ショック。美味しいもの食べて寝ます!さようなら。
image.png
image.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?