問題
提出コード
の文字列を一つの年として見た時の、
の組み合わせの個数
とします。
の文字列を使用した、と言うことは、次に選ぶ
が
より真に大きい値になる必要があります。
条件は以下の二つで、どちらか片方を満たせばよいです。
これは、桁がそもそも大きいパターンです。かつ、2つの文字列を左から順に見ていった場合に初めて異なる値を
については
、
については
としたときに、
桁が同じ場合です。
1つめのパターンはすぐに計算できます。2つめのパターンが含まれるか含まれないか、を調べればよいです。
これは、についてZ algorithmを適用し、
からの接頭辞がどれだけ一致しているかを見ればよいです。
結局遷移は以下のようになります。
となる
が含まれる場合
含まれない場合
で計算できます。
累積和を更新しながらDPをすることで、で解けます。