#include #include #include #include #include #include using namespace std; const int MOD = 1e9 + 7; void show(vector> &vv) { for (auto v : vv) { for (auto e : v) { printf("%3lld ", e); } cout << endl; } } int main() { int m; string s; cin >> s >> m; int n = s.size(); vector> dp(n + 1, vector(m, 0)); vector dp1(m, 0), dp2(m, 0); int n_zero = 0; for (int i = 0; i < n; i++) { int num = s[i] - '0'; if (num == 0) { n_zero++; } else { dp[i + 1][num % m] += 1; } for (int j = 0; j < m; j++) { dp[i + 1][(dp[i][j] * 10 + num) % m] += dp[i][j]; dp[i + 1][dp[i][j] * 10 % m] += dp[i][j]; } } // show(dp); // printf("zero %d\n", n_zero); long long ans = (dp[n][0] + n_zero) % MOD; cout << ans << endl; return 0; }