Pagini recente » Cod sursa (job #1892904) | Statistici Jinga Cosmin (mumyrevine12) | Rating Roman Tudor (Roman_Tudor) | Cod sursa (job #2352691) | Cod sursa (job #2413239)
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin ("diviz.in");
ofstream cout ("diviz.out");
const int MOD = 30103;
int n, k, a, b, sol;
char s[205];
int dp[205][205][205], f[205][15];
int nr(char c) {
return c - '0';
}
int main() {
cin >> k >> a >> b >> (s + 1);
n = strlen(s + 1);
for(int i = n; i >= 1; i--) {
for(int j = 0; j <= 9; j++)
f[i][j] = f[i + 1][j];
f[i][nr(s[i])] = i;
}
for(int i = 1; i <= 9; i++)
dp[1][f[1][i]][i % k] = 1;
for(int i = 1, ln = 1; i <= b; i++, ln = 1 - ln) {
for(int j = i; j <= n; j++) {
for(int r = 0; r < k; r++) {
if(dp[ln][j][r] == 0)
continue;
for(int c = 0; c <= 9; c++) {
if(f[j + 1][c]) {
int r2 = (r * 10 + c) % k;
dp[1 - ln][f[j + 1][c]][r2] += dp[ln][j][r];
dp[1 - ln][f[j + 1][c]][r2] %= MOD;
}
}
}
if(i >= a) {
sol += dp[ln][j][0];
sol %= MOD;
}
}
memset(dp[ln], 0, sizeof(dp[ln]));
}
cout << sol;
return 0;
}