れとろのメモ置場

とあるSEのメモ置場

AtCoder Beginner Contest 281

AtCoder Beginner Contest 281に参加しました。

結果

A,B,Cの3問正解でした。

コンテスト始めてから気がついたけど、キーボードのvの反応がかなり悪くてペーストが全然できなくなってた。サンプルでテストしたり、コードを提出する時に支障が出まくった...

A - Count Down

問題文の通り処理する。

受け取ったNから0までを順番に出力する。ループがちゃんと使えれば特に困らない問題。

B - Sandwich Number

これも問題文の通り処理する。

3つある条件を順番に確認していけば良い。
先頭と最後が文字かどうかの確認は簡単にできると思う。

2番目の条件だけがちょっと面倒くさい。
簡単に言うと、最初と最後の文字を除いた文字列が6文字であることを確認し、 先頭から順番に数値を表す文字であることを確認しながら数値に変換していけば良い。 変換した後の値が100000 以上 999999なら条件を満たしていると判断する。

C - Circular Playlist

C問題にしては割りと簡単な気がする問題。

まずはN曲の全部の再生時間を求めて、Tをその合計で割った余りを求める。 あとは線形探索で何曲目の何秒目になるのかを求める。

D - Max Multiple

解けそうで解けなかった問題。

問題自体は簡単な内容で、非負整数列Aの中から任意のK個の項を選ぶ合計を求めた時どれだけ大きなDの倍数を作れるかを求める問題。

DPかなと思ったけどDP[iまで見た][j個選んだ]=和の最大値 で考えてみるとちょっと答えは求められなさそうだなと思って別の解き方を考えてみてた。
解説を見るとやっぱりDPだったのでもう少しDPで行けないか考えてみれば良かったなあ。