こんにちは、nullpointerlogです。

一週間前に開催された AtCoder Beginner Contest 406(ABC406)に参加しました。
結果は A問題のみの1完 という悔しい内容でした。


💥 コンテスト結果

  • 解けた問題:A問題
  • B問題:WA
  • C問題:WA
  • レート:519 → 490 にダウン ⬇️

✅ A問題:A - Not Acceptable

与えられた時刻(時・分)を検証するだけの問題でした。
内部的には時を60倍して「分」に換算し、条件と比較することで解決しました。
実装は素直で、ここは無事にAC。


❌ B問題:B - Product Calculator

1桁の数字を次々に掛けていき、結果が K桁以上(最大K=18)になったら 1 に戻す、という問題です。

ここでやってしまいました。
C++で long long を使っていましたが、乗算結果が long long の範囲を超え、正しく判定できていませんでした。

// 誤った判定(オーバーフローの可能性あり)
if (ans * a >= rim) ans = 1;

これを以下のように修正することで、オーバーフローを回避できます:

// 乗算前に判定する方法
if (a > (rim - 1) / ans) ans = 1;

この改善点は、AtCoder公式の解説動画で学びました。なるほど納得です。


❌ C問題:C - 〜(※問題名省略)

サンプルケースはACできましたが、本番テストケースでは約半分がWA。
ロジック的に甘い部分、もしくはコーナーケースを見落としていたようです。

こちらも解説をしっかり確認して、次につなげたいと思います。


🔁 今後の課題と意気込み

レートは490に下がってしまいましたが、今は我慢のとき。
ここ最近、調子が良いときと悪いときが交互に来ていて、なかなかレートが伸びません。
B問題もC問題も、もう少しというところだったと思うので、本日は落ち着いていきたいと思います。

それではまた、次回の結果報告で!