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# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.Collections.Generic;
class Program{
	const int mod=1000000007;
	static void Main(){
		string s=Console.ReadLine();
		int e=int.Parse(Console.ReadLine());
		int n=s.Length;
		long ans=0;
		int[,,] dp=new int[n+1,2,e];
		dp[0,0,0]=1;
		for(int i=0;i<n;i++){
			for(int j=0;j<2;j++){
				for(int l=0;l<e;l++){
					int lm=j==0?s[i]-'0':9;
					for(int d=0;d<=lm;d++){
						dp[i+1,(j==1||d<lm)?1:0,(l+d)%e]+=dp[i,j,l];
						dp[i+1,(j==1||d<lm)?1:0,(l+d)%e]%=mod;
					}
				}
			}
		}
		for(int j=0;j<2;j++){ans+=dp[n,j,0];}
		Console.WriteLine((ans-1+mod)%mod);
	}
}