Pagini recente » Cod sursa (job #2476737) | Cod sursa (job #1666767) | Cod sursa (job #189259) | Cod sursa (job #1355101) | Cod sursa (job #272616)
Cod sursa(job #272616)
#include <cstdio>
#include <cstring>
#define maxn 210
#define mod 30103
using namespace std;
int k, a, b, n, i, j, q, c;
int v[2][maxn][maxn];
int t[maxn], p[10][maxn], sol;
char s[maxn];
int main() {
freopen("diviz.in", "r", stdin);
freopen("diviz.out", "w", stdout);
scanf("%d%d%d ", &k, &a, &b);
fgets(s, 210, stdin);
for (i = 0; s[i]; i++)
t[i + 1] = s[i] - 48;
n = i;
for (c = 0; c < 10; c++)
for (i = 1; i <= n; i++)
for (j = i; j <= n; j++)
if (t[j] == c) {
p[c][i] = j;
break;
}
for (i = 1; i < 10; i++)
v[0][p[i][1]][i % k]++;
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++)
for (q = 0; q < k; q++) {
if (i >= a && i <= b && q == 0)
sol = (sol + v[0][j][q]) % mod;
for (c = 0; c < 10; c++)
if (p[c][j + 1])
v[1][p[c][j + 1]][(q * 10 + c) % k] = (v[1][p[c][j + 1]][(q * 10 + c) % k] + v[0][j][q]) % mod;
}
memcpy(v[0], v[1], sizeof(v[1]));
memset(v[1], 0, sizeof(v[1]));
}
printf("%d\n", sol);
return 0;
}