桁DPはこれで4問目なのだが、今回も盛大にバグらせてしまった。漸化式を立てる際に境界を間違えてしまうのはさしあたり仕方ないとして、デバッグの時間はもっと短くできるはず。使っているメモ化マクロにトレース機能をつけるのが良さそう。
を中の禁止された数の総数とすると、求める数はである。を桁数で最上桁の数字がであるような数(のとき、000003のような表現を許す)のうちの、禁止された数字の総数とする。ただし、なら数は自由に選べ、ならを超えないようなものに限定して数えるとする。このとき、であり、DPすれば求まる。
わかりにくい式でDPしてしまったように思える。4か9が既に現れたかどうかだけ見ればよいらしいので、あとで解き直すかも。