Pagini recente » Cod sursa (job #141292) | Cod sursa (job #1680581) | Cod sursa (job #2755043) | Cod sursa (job #861109) | Cod sursa (job #1839957)
#include <cstdio>
#include <cstring>
#include <vector>
#define MAXN 202
#define MAXK 101
#define MOD 30103
using namespace std;
int d[MAXN][MAXN][MAXK], v[MAXN], pos[MAXN][10];
char s[MAXN];
bool found[10];
int main()
{
freopen("diviz.in", "r", stdin);
freopen("diviz.out", "w", stdout);
int n, i, j, k, a, b, t, cif, ans = 0;
scanf("%d%d%d\n", &k, &a, &b);
gets(s+1);
n = strlen(s+1);
for(i=1; i<=n; ++i)
v[i] = s[i]-'0';
for(i=1; i<=n; ++i)
for(j=i+1; j<=n; ++j)
if(!pos[i][v[j]])
pos[i][v[j]] = j;
for(i=1; i<=n; ++i)
if(!found[v[i]] && v[i])
{
found[v[i]] = 1;
d[1][i][v[i]%k] = 1;
if(a == 1 && v[i]%k == 0)
ans++;
}
for(i=1; i<b; ++i)
{
for(j=1; j<=n; ++j)
for(t=0; t<k; ++t)
for(cif=0; cif<10; ++cif)
if(pos[j][cif])
d[i+1][pos[j][cif]][(t*10 + cif)%k] = (d[i+1][pos[j][cif]][(t*10 + cif)%k] + d[i][j][t]) % MOD;
if(i>=a-1)
for(j=1; j<=n; ++j)
ans = (ans + d[i+1][j][0]) % MOD;
}
/*
for(i=1; i<=b; i++){
for(j=1; j<=n; ++j){
for(t=0; t<k; ++t)
printf("%d ", d[i][j][t]);
printf("\n");
}
printf("\n");
}*/
printf("%d", ans);
return 0;
}