Pagini recente » Cod sursa (job #1834235) | Cod sursa (job #297527) | Cod sursa (job #207688) | Cod sursa (job #2812110) | Cod sursa (job #1128825)
#include<fstream>
#include<cstring>
#define MOD 30103
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
int a,b,k,ap[202][10],nrc,n[202],d[2][202][102],sol;
void citire()
{
char s[202];
int l;
fin>>k>>a>>b;
fin>>s;
l=strlen(s);
for(int i=0;i<l;i++)
{
n[++nrc]=s[i]-'0';
}
}
void aparitii()
{
for(int i=nrc-1;i>=0;i--)
{
memcpy(ap[i],ap[i+1],sizeof(ap[i+1]));
ap[i][n[i+1]]=i+1;
}
}
void din()
{
for(int i=1;i<=9;i++)
{
if(ap[0][i]!=0)
{
d[1][ap[0][i]][i%k]++;
}
}
for(int i=2;i<=b;i++)
{
memset(d[i%2],0,sizeof(d[i%2]));
for(int j=i-1;j<=nrc;j++)
{
for(int t=0;t<=k-1;t++)
{
if(d[1-i%2][j][t]!=0)
{
for(int p=0;p<=9;p++)
{
if(ap[j][p]!=0)
{
d[i%2][ap[j][p]][(t*10+p)%k]+=d[1-i%2][j][t];
if(d[i%2][ap[j][p]][(t*10+p)%k]>MOD)
d[i%2][ap[j][p]][(t*10+p)%k]-=MOD;
}
}
}
}
}
if(i>=a)
{
for(int j=1;j<=nrc;j++)
{
sol=sol+d[i%2][j][0];
if(sol>MOD)
sol-=MOD;
}
}
}
}
int main()
{
citire();
aparitii();
din();
fout<<sol;
return 0;
}