Pagini recente » Cod sursa (job #576833) | Cod sursa (job #1206156) | Cod sursa (job #378024) | Cod sursa (job #1884416) | Cod sursa (job #8404)
Cod sursa(job #8404)
#include<stdio.h>
#include<string.h>
#define NMAX 201
#define KMAX 101
#define Q 30103
void read();
void solve();
int K, A, B, N, V[NMAX][KMAX], next[NMAX][10];
char S[NMAX];
int main()
{
freopen("diviz.in", "r", stdin);
freopen("diviz.out", "w", stdout);
read();
solve();
return 0;
}
void read()
{
scanf("%d%d%d", &K, &A, &B);
scanf("%s", S);
N = strlen(S);
}
void solve()
{
int i, j, k, rez = 0, c;
for(i = 0; i < N; i++)
if(S[i] != '0')
V[i][(S[i] - '0') % K] = 1;
for(i = 0; i < N; i++)
for(k = 0; k < 10; k++)
for(j = i; j < N; j++)
if(S[j] == k + '0')
{
next[i][k] = j;
break;
}
for(j = 1; j < B; j++)
for(i = N - 1; i >= 0; i--)
for(k = 0; k < K; k++)
{
if(!V[i][k]) continue;
if(j >= A && !k)
rez += V[i][k], rez %= Q;
for(c = 0; c < 10; c++)
if(next[i + 1][c])
V[next[i + 1][c]][(k * 10 + c)%K] += V[i][k], V[next[i + 1][c]][(k * 10 + c)%K] %= Q;
V[i][k] = 0;
}
for(i = N - 1; i >= 0; i--)
rez += V[i][0], rez %= Q;
printf("%d\n", rez);
}