Pagini recente » Cod sursa (job #1071665) | Cod sursa (job #1508023) | Cod sursa (job #591450) | Cod sursa (job #2998762) | Cod sursa (job #7120)
Cod sursa(job #7120)
using namespace std;
#include<fstream>
#define nmax 205
#define kmax 105
#define lmax 205
#define cst 30103
int a,b,k;
int v[nmax],n;
char s[nmax];
int m[nmax][lmax][kmax];
int ult[nmax][12];
int crt[12];
int main()
{
ifstream fin("diviz.in");
ofstream fout("diviz.out");
fin>>k>>a>>b>>s;
int i,j,q,l;
for(i=0;s[i];i++)
v[i+1]=s[i]-'0';
n=i;
memset(m,0,sizeof m);
memset(crt,0,sizeof crt);
for(i=1;i<=n;i++)
{
for(j=0;j<10;j++)
{
ult[i][j]=crt[j];
if(v[i]==j)
crt[j]=i;
}
}
m[0][0][0]=1;
for(i=1;i<=n;i++)
{
for(l=0;l<b;l++)
for(q=0;q<k;q++)
if(!(l+1==1&&v[i]==0))
{
m[i][l+1][(q*10+v[i])%k]+=cst+m[i-1][l][q]-(ult[i][v[i]]?m[ult[i][v[i]]-1][l][q]:0);
m[i][l+1][(q*10+v[i])%k]%=cst;
}
for(l=0;l<=b;l++)
for(q=0;q<k;q++)
{
m[i][l][q]+=m[i-1][l][q];
m[i][l][q]%=cst;
}
}
int sol=0;
for(i=a;i<=b;i++)
sol+=m[n][i][0];
fout<<sol%cst<<"\n";
fin.close();
fout.close();
return 0;
}