Pagini recente » Cod sursa (job #1688236) | Cod sursa (job #494397) | Cod sursa (job #2247096) | Cod sursa (job #3204063) | Cod sursa (job #484373)
Cod sursa(job #484373)
#include <algorithm>
using namespace std;
#define MOD 30103
#define MAX 205
#define DIM 105
#define CIF 10
int bst[2][MAX][DIM];
int nxt[CIF][MAX];
int n,k,a,b,sol;
char buff[MAX];
int v[MAX];
void read ()
{
int i,j;
scanf ("%d%d%d\n",&k,&a,&b);
fgets (buff+1,MAX,stdin);
n=strlen (buff+1)-1;
for (i=1; i<=n; ++i)
{
v[i]=buff[i]-'0';
for (j=i; j>=0; --j)
{
if (nxt[v[i]][j])
break ;
nxt[v[i]][j]=i;
}
}
}
void solve ()
{
int i,j,l,m;
for (i=1; i<10; ++i)
bst[0][nxt[i][0]][i%k]=1;
for (i=1; i<=b; ++i)
{
for (j=1; j<=n; ++j)
{
if (i>=a)
sol=(sol+bst[0][j][0])%MOD;
for (l=0; l<k; ++l)
if (bst[0][j][l])
for (m=0; m<10; ++m)
if (nxt[m][0])
bst[1][nxt[m][j+1]][(m+l*10)%k]=(bst[1][nxt[m][j+1]][(m+l*10)%k]+bst[0][j][l])%MOD;
}
memcpy (bst[0],bst[1],sizeof (bst[1]));
memset (bst[1],0,sizeof (bst[1]));
}
printf ("%d",sol);
}
int main ()
{
freopen ("diviz.in","r",stdin);
freopen ("diviz.out","w",stdout);
read ();
solve ();
return 0;
}