Pagini recente » Cod sursa (job #1427041) | Cod sursa (job #669091) | Cod sursa (job #1639900) | Cod sursa (job #813698) | Cod sursa (job #2767828)
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int k, a, b, n;
string s;
const int MOD = 30103;
void read() {
ifstream f("diviz.in");
f >> k >> a >> b;
f >> s;
f.close();
}
int rez;
int dp[2][101][201][10];
void solve() {
int i, j, r, new_rest, cif, t = 0;
n = s.size();
dp[0][0][0][0] = dp[1][0][0][0] = 1;
for (i = 1; i <= n; i++) {
t = 1 - t;
for (j = 1; j <= n; j++)
for (r = 0; r < k; r++)
for (cif = 0; cif <= 9; cif++)
dp[t][r][j][cif] = (cif == s[i - 1] - '0' ? 0 : dp[1 - t][r][j][cif]);
for (j = 1; j <= n; j++)
for (r = 0; r < k; r++) {
new_rest = (r * 10 + (s[i - 1] - '0')) % k;
if (j == 1 && new_rest == 0 && s[i - 1] == '0')
continue;
for (cif = 0; cif <= 9; cif++)
dp[t][new_rest][j][s[i - 1] - '0'] = (dp[t][new_rest][j][s[i - 1] - '0'] + dp[1 - t][r][j - 1][cif]) % MOD;
}
}
t = n % 2;
for (i = a; i <= b; i++)
for (cif = 0; cif <= 9; cif++)
rez = (rez + dp[t][0][i][cif]) % MOD;
}
void output() {
ofstream g("diviz.out");
g << rez;
g.close();
}
int main() {
read();
solve();
output();
return 0;
}