[SDOI2014]数数
题目描述:
我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串。
例如当S=(22,333,0233)时,233是幸运数,2333、20233、3223不是幸运数。
给定N和S,计算不大于N的幸运数个数。
输入格式:
输入的第一行包含整数N。
接下来一行一个整数M,表示S中元素的数量。
接下来M行,每行一个数字串,表示S中的一个元素。
输出格式:
输出一行一个整数,表示答案模(10^{9}+7)的值。
跟[JSOI2007]文本生成器类似
把DP更改为数位DP即可
增添一维 (dp(i,j,k): , k: epsilon (0,1))
k = 0时,表示第 i 位不受限制时的数量
k = 1时,表示第 i 位受到限制时的数量
转移时;
( dp(i, j, 1) = dp(i, j, 1) + dp(i - 1, v, 1) ;)
( dp(i, j, 0) = dp(i, j, 0) + dp(i-1, v, 0) ;)
( dp(i, j, 1) = dp(i, j, 1) + dp(i-1, v, 0),: v leq n;)
初值注意也要限制;