解法
制約を見ると明らかに桁DPのような匂いがするので桁DPをしました。
の上から
桁目を
とします。
となる
が存在した場合、
をすると繰り上がりが発生するので、
となります。逆に、それ以外の
はどれを使用してても問題の条件を満たします。
ということで、のみを選択して
となる
のペアの個数を求めることができればよいです。
という配列を用意します。添え字はそれぞれ次のことを表します。
今上から何桁目までの数字を決めたか
:
が
未満の数字であることが確定しているかどうか
つまり、
は、上から
桁だけ数字を決めて、
どちらも
未満であるようなペア
の個数
は、上から
桁だけ数字を決めて、
となっているようなペア
の個数
となります。
このようなことができるのは、上から数字を決めていったときに、その時点でが確定していれば、それより下の桁をいかなる数字にしても、
であることが決まっているからです。
の上から
桁目を
として、
について場合分けをしつつ遷移を見ていきます。
が
1のとき
からの遷移を考えます。
のときに、
桁目で
をそれぞれ選んだ場合どうなるか、を考えると、
を選んだ際は
が確定します。
逆に、を選んだ際は、
となります。
ということで、まず
が決まります。
のときに、
桁目で
をそれぞれ選んだ場合どうなるか、を考えると、
どれを選んでも
が確定しています。
よって、
となります。
遷移元がこれで全部になるので、結局遷移は
となります。が
0のとき
同様にしてからの遷移を考えます。
のときに、
桁目で
をそれぞれ選んだ場合どうなるか、を考えると、
を選んだ際でも、
となります。
を選ぶことはできません。
を超えてしまいます。
ということで、まず遷移は
となります。のときはというと、
どれを選んでも
が確定しています。
ということで、
となります。
よって、
となります。
あとは、この場合分けをもとに遷移を行っていけばよいです。
初期状態ですが、
、とみなすことができ、
未満であることはもちろん確定していないので、
となります。
答えは、となります。
感想
逆に、DPでない方法を考えることができませんでした。
いろいろな方法を思いつけるようになりたいですね。