Problem:
Score : 100 points

Problem Statement

Find the number of integers between 1 and K (inclusive) satisfying the following condition, modulo 10^9 + 7:

The sum of the digits in base ten is a multiple of D.

Constraints

All values in input are integers.

1 \leq K < 10^{10000}

1 \leq D \leq 100

Input

Input is given from Standard Input in the following format:

K
D

Output

Print the number of integers satisfying the condition, modulo 10^9 + 7.

Sample Input 1

30
4

Sample Output 1

6

Those six integers are: 4, 8, 13, 17, 22 and 26.

Sample Input 2

1000000009
1

Sample Output 2

2

Be sure to print the number modulo 10^9 + 7.

Sample Input 3

98765432109876543210
58

Sample Output 3

635270834

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long
#define pii pair<int, int>
#define pll pair<long long, long long>
#define ull unsigned long long
#define mp make_pair
#define F first
#define S second
#define mod 1000000007



int main()
{
    string s;
    cin >> s;
    int d;
    cin >> d;
    vector<vector<int> > dp(d, vector<int>(2));
    
    dp[0][false] = 1;
    for(int i=0; i<s.size();i++)
    {
        vector<vector<int> > tmp_dp(d, vector<int>(2));
        int cur = s[i]-'0';
        for(int remainder=0; remainder<d; remainder++)
        {
            bool ar[2];
            ar[0] = false;
            ar[1] = true;
            for(bool small:ar) 
                for(int j=0;j<10;j++)
                {
                    if(j > cur && !small)
                    {
                        break;
                    }
                    tmp_dp[(remainder+j)%d][small || j<cur] = (tmp_dp[(remainder+j)%d][small || j<cur]
                                            + dp[remainder][small])%mod ;
                }
        }
        dp = tmp_dp;
    }

    cout << (dp[0][true] + dp[0][false] -1)%mod << endl;

}