Atcoder Beginner Contest 193 D – WAからの脱却

初手の発想

ABC193_D

各数字について、すでに確定しているカードの枚数を記録して、確定していないカードについて、勝敗を全探索すればよさそう。
確定していないカードの組み合わせは高々 9 × 9 の81通りしかないので余裕で探索できるはず。

提出コード

提出コード

提出したのがこのコードですが、まったく突破できない。
というか、テストケースすら突破できない。 何が悪いのかコンテスト中にはわからないまま終わりましたが…

間違い

紆余曲折あったのですが、コンテスト中に最も特定まで時間を食った間違いは、pow に long long 型を突っ込んでいることでした。 ここが間違っているので、自分でプログラムをテストする時の挙動がわけわからないことになりました。

その上で修正すべき点は、

  • 12, 22 行目の条件分岐は不要。 (実は、最初は要れていなかったのだが、powの挙動が変なので入れてしまった。)
  • 62, 64 行目の演算でオーバーフローを起こしている。 long long 型でないといけない。

pow の挙動には、すごく騙されました。例えば次のコードです。

このコードを手元環境で実行すると、 100 99 が出力されます。

つまり、long long がたの 10の2乗が 99として計算されています。

教訓

floor といい、long long 型を使用するときは、標準ライブラリのサポートはないものと考えてプログラムしたほうが良いようです。

疑問を感じる言語だ。
この言語嫌いかもしれない。 緑の間は慣れるためにc++で推し進めるつもりですが、乗換を検討しよう。 でも静的型付言語になれておきたい。

だいぶ冷えました。

コメント

タイトルとURLをコピーしました