きろく

特筆すべき記録のまとめ

AtCoder Beginner Contest 135:D - Digits Parade

問題

https://atcoder.jp/contests/abc135/tasks/abc135_d

解法

以下の DP を考える.

dp(i, j) := 0 ~ i 桁目まで見て,13 で割った余りが j のとき,i + 1 桁目以降余りが 5 になるような ? の埋め方の通り数

 i 桁目が ? であるときは 0 ~ 9 を入れる方法があるので,この 10 通りを全て試す.遷移においては,各桁ごとに mod を取ったものを足していく.

dp(i, j) = dp(i + 1, (j + k * (10 ^ i)) % 13) (0 <= k <= 9)

i 桁目がすでに決まっているときは k = S_i として計算すればよい.O(|S|).

解答

https://atcoder.jp/contests/abc135/submissions/6589760

考えてしまえばとてもシンプルな DP だったので,コンテスト本番中に通しておきたかった.

f:id:babcs2035:20190728114801p:plain