Lang:Python2
Edit12345678910111213141516171819202122232425262728293031import sysdef df(l, r, s, k, dict_):if (l, r, s) in dict_:return dict_[(l, r, s)]f = min(k, 9)if s < 50000:dp = [[0 for i in range(f + 1)] for i in range(s)]for i in range(s):for j in range(f + 1):if i == 0 and j == l:dp[i][j] = 1elif i == 0:dp[i][j] = 0else:ans = 0for ff in range(f + 1):if j * ff <= k:ans += dp[i - 1][ff] % (10 ** 9 + 7)dp[i][j] = ans % (10 ** 9 + 7)ans = dp[s - 1][r]dict_[(l, r, s)] = ansreturn ansans = 0s1 = s / 2 + 1s2 = s - s1 + 1for i in range(f + 1):ans += df(l, i, s1, k, dict_) * df(i, r, s2, k, dict_)dict_[(l, r, s)] = ans % (10 ** 9 + 7)