Pagini recente » Cod sursa (job #1930883) | Cod sursa (job #1844144) | Cod sursa (job #770424) | Cod sursa (job #1937165) | Cod sursa (job #1128764)
#include<fstream>
#include<cstring>
#define MOD 30103
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
int a,b,k,ap[201][10],nrc,n[201],d[2][201][101],sol;
void citire()
{
char ch;
fin>>k>>a>>b;
fin.get();
while((ch=fin.get())!='\n')
{
n[++nrc]=ch-'0';
}
}
void aparitii()
{
for(int i=0;i<=nrc;i++)
{
for(int j=nrc;j>=i+1;j--)
{
ap[i][n[j]]=j;
}
}
}
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<a;i++)
{
memset(d[i%2],0,sizeof(d[i%2]));
for(int j=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];
d[i%2][ap[j][p]][(t*10+p)%k]%=MOD;
}
}
}
}
}
}
for(int i=a;i<=b;i++)
{
memset(d[i%2],0,sizeof(d[i%2]));
for(int j=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];
d[i%2][ap[j][p]][(t*10+p)%k]%=MOD;
}
}
}
}
}
for(int j=1;j<=nrc;j++)
{
sol=(sol+d[i%2][j][0])%MOD;
}
}
}
int main()
{
citire();
aparitii();
din();
fout<<sol;
return 0;
}