Pagini recente » Cod sursa (job #162636) | Cod sursa (job #2585080) | Cod sursa (job #2911076) | Cod sursa (job #2731954) | Cod sursa (job #16749)
Cod sursa(job #16749)
#include <stdio.h>
#include <string.h>
#define NMAX 202
#define KMAX 102
#define CMAX 10
#define MOD 30103
#define FOR(i,a,b) for (i = (a); i <= (b); i++)
int D[2][NMAX][KMAX], N, A, B, K, First[CMAX][NMAX], V[NMAX], Rez, Cif[NMAX];
int main()
{
int i, j, r, cif, s = 0, d = 1;
char c[NMAX];
freopen("diviz.in", "r", stdin);
scanf("%d %d %d ", &K, &A, &B);
gets(c);
N = strlen(c);
for (i = 0; i < N; i++)
{
V[1+i] = c[i]-48;
Cif[V[i]] = 1;
First[V[i]][0] = i;
}
for (cif = 0; cif < CMAX; cif++)
for (i = 1; i <= N; i++)
for (j = i+1; j <= N; j++)
if (V[i] == V[j]) { First[cif][i] = j; break; }
for (cif = 1; cif < CMAX; cif++)
if (Cif[cif]) D[0][ First[cif][0] ][ cif%K ] = 1;
FOR(i, 1, B)
{
FOR (j, 1, N)
{
FOR (r, 0, K-1)
FOR(cif, 0, CMAX-1)
D[d][ First[cif][j] ][ (r*10+cif)%K ] = Cif[cif]*(D[d][ First[cif][j] ][ (r*10+cif)%K ]+D[s][j][r])%MOD;
Rez = (i>=A)*(Rez+D[s][j][0])%MOD;
}
s = (s+1)&1; d = (d+1)&1;
}
freopen("diviz.out", "w", stdout);
printf("%d\n", Rez);
return 0;
}