CF914C
数位 dp 模板题。
经过一次操作,可以把 \(n\) 变成一个小于 \(10^3\) 的数。
所以我们可以把所有小于 \(10^3\) 的数操作的次数全部处理出来。
然后就是正常的数位 dp。
定义 \(dp_{s,num,lim}\) 表示剩 \(s\) 位,有 \(num\) 个数,是不是在上线的情况数。
然后直接记忆化搜索就行了。
所以就看一下一个是 \(1\) 还是 \(0\)。
如果不在上界:
所以就会去到 \((s - 1,num + 1,0)\) 和 \((s - 1,num,0)\) 两种状态。
否则:
如果这一位固定是 \(0\),则去到 \((s - 1,num,0)\),否则去到 \((s - 1,num + 1,0)\) 和 \((s - 1,num + 1,1)\)。
就结束啦!