给你两个数字字符串 num1 和 num2 ,以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件,我们称它是一个好整数:
num1 <= x <= num2
min_sum <= digit_sum(x) <= max_sum.
请你返回好整数的数目。答案可能很大,请返回答案对 109 + 7 取余后>的结果。注意,digit_sum(x) 表示 x 各位数字之和。
class Solution {
const int MOD = 1'000'000'007;
int calc(string& s, int min_sum, int max_sum){
int n = s.length();
vector<vector<int>> memo(n, vector<int>(min(9*n, max_sum) + 1, -1));
function<int(int, int, bool)> dfs = [&](int i, int sum, bool is_limit) -> int{
if(sum > max_sum){
return 0;
}
if(i == n){
return sum >= min_sum ? 1 : 0;
}
if(! is_limit && memo[i][sum] != -1){
retu