Pagini recente » Cod sursa (job #2384586) | Cod sursa (job #2292618) | Cod sursa (job #1129322) | Cod sursa (job #1793594) | Cod sursa (job #1357837)
#include <fstream>
#include <algorithm>
#include <cstring>
#include <bitset>
#define MOD 30103
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
int k, A, B;
int v[210];
int 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] = 1;
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] += MOD;
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]) % MOD;
last[j][(mod * 10 + v[i]) % k][v[i]] += d1[j-1][mod];
last[j][(mod * 10 + v[i]) % k][v[i]] %= MOD;
}
}
memcpy(d1, d2, sizeof(d1));
}
int sol = 0;
for (int i = A; i <= B; i++)
sol = (sol + d1[i][0]) % MOD;
fout << sol << "\n";
return 0;
}