Pagini recente » Cod sursa (job #1090226) | Cod sursa (job #307037) | Cod sursa (job #1510542) | Cod sursa (job #2230455) | Cod sursa (job #1769381)
#include <bits/stdc++.h>
#define Xp 30103
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
int k, A, B,v[210],d1[210][110],d2[210][110],last[210][110][10];
char s[210];
int main() {
fin >> k >> A >> B;
fin >> (s+1);
int n = strlen(s + 1);
for (int i = 1; i <= n; i++) v[i] = s[i] - '0';
d1[0][0] =d2[0][0] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++)
for (int mod = 0; mod < k; mod++) {
if (v[i] == 0 && j == 1) continue;
d2[j][mod] -= last[j][mod][v[i]];
if (d2[j][mod] < 0) d2[j][mod] += Xp;
last[j][mod][v[i]] = 0;
}
for (int j = 1; j <= i; j++) {
if (v[i] == 0 && j == 1) continue;
for (int mod = 0; mod < k; mod++){
d2[j][(mod * 10 + v[i]) % k] = (d2[j][(mod * 10 + v[i]) % k] + d1[j-1][mod]) % Xp;
last[j][(mod * 10 + v[i]) % k][v[i]] += d1[j-1][mod];
last[j][(mod * 10 + v[i]) % k][v[i]] %= Xp;
}
}
memcpy(d1, d2, sizeof d1);
}
int sol = 0;
for (int i = A; i <= B; i++)
sol = (sol + d1[i][0]) % Xp;
fout << sol;
return 0;
}