为什么这道题不能将 limit 一维计入数组?
而是要这样写
ll dfs(bool mx, int len, int Mod, int mul) {
if (len == 0) return mul % Mod == 0;
if (!mx && ~f[len][mul][a[Mod]]) return f[len][mul][a[Mod]];
ll res = 0;
for (int i = 0; i < 10; ++i) {
if (mx && i > num[len]) break;
res += dfs(mx && i == num[len], len - 1, i != 0 ? i * Mod / __gcd(i, Mod) : Mod, (mul * 10 + i) % mod);
}
if (!mx) return f[len][mul][a[Mod]] = res;
else return res;
}