Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

AtCoder Beginner Contest 166

5完2WA。

久々の5完なのに緑パフォとか、世間の風は冷たい・・・。

各問題

A - A?C

入力がABCならARCを、ARCならABCを出力です。

B - Trick or Treat

N人のすぬけ君のためにintの配列を用意して、お菓子毎に持っているすぬけ君のカウントを上げていけば、最終的にカウントが0のままのすぬけ君がいたずらを受けるので、それを数え上げて出力します。

B問題にしてはちょっと骨のある問題だった気が。

C - Peaks

1本の道単位でしか高さをチェックする必要がないので、各道ごとに低い方をNGとしていって、最終的にNGにならなかった展望台の数が答えです。なお、高さが同じ場合は両方NGとします。

私はif - else if - else としたかったところを、if - if -else としてしまって1WA出してしまいました。最近こういうミスが多い・・。

D - I hate Factorization

A^5 - B^5 = Xを式変形してA^5 = X + B^5とすることで、X + B^5もある整数の5乗であることがわかります。

前準備として、1から順に5乗の数を作って元の数とべき数の組で保存しておき、Bを適切な範囲で全探索してX + B^5が保存しておいたべき数に一致すればそれは満たす組の片割れであることが確定するので、Bと保存しておいた元の数を出力すればよいです。

E - This Message Will Self-Destruct in 5s

入力A_iにたいして、B_i = A_i - iとします(0-indexed)。B_iはmapで集計しておきます。

あらかじめインデックスを引いているので、i<jとなるjに対してA_i + B_j + i = 0となったものが条件を満たすペアとなり、この数はあらかじめ前処理しているので、集計処理は全体でO(N)で済みます。

あ、なおmapからはi<jを満たせるように、都度A_iより生成されたB_iのカウントを引いていく必要があります。

F - Three Variables Game

久しぶりにF問題を読んだ気がしますが、残り時間も少なく全く何も浮かんできませんでした。

まとめ

いっときのスランプ状態は乗り越えて、上向きにはなっている気がします。あとはつまらないミスで時間を溶かすのをどうにかしないといけませんね。

f:id:mdstoy:20200503230410p:plain