Pagini recente » Cod sursa (job #1086744) | Cod sursa (job #3148440) | Cod sursa (job #560169) | Cod sursa (job #3130513) | Cod sursa (job #2835906)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
const int mod=30103;
int n,k,a,b;
string s;
int f[10][205],dp[2][205][105];
int main()
{
fin>>k>>a>>b>>s;
n=s.size();
for(int c=0; c<10; c++)
f[c][n]=n;
for(int i=n-1; i>=0; i--)
{
for(int c=0; c<10; c++)
{
if(c==s[i]-'0')
f[c][i]=i;
else
f[c][i]=f[c][i+1];
}
}
for(int c=1; c<10; c++)
dp[1][f[c][0]][c%k]=1;
int ind=1,sum=0;
for(int lg=1; lg<=b; lg++,ind^=1)
{
for(int i=0; i<n; i++)
{
for(int r=0; r<k; r++)
{
if(dp[ind][i][r]==0)
continue;
if(lg>=a && r==0)
sum=(sum+dp[ind][i][r])%mod;
for(int c=0; c<10; c++)
dp[ind^1][f[c][i+1]][(r*10+c)%k]=(dp[ind^1][f[c][i+1]][(r*10+c)%k]+dp[ind][i][r])%mod;
dp[ind][i][r]=0;
}
}
}
fout<<sum<<"\n";
return 0;
}