Pagini recente » Cod sursa (job #35019) | Cod sursa (job #186716) | Cod sursa (job #168641) | Cod sursa (job #2870748) | Cod sursa (job #2087633)
#include <bits/stdc++.h>
#define MAXN 200
#define MAXK 100
#define MOD 30103
int d[10 + MAXN][1 + MAXN][1 + MAXK];
int lastcif[10];
int main(){
FILE*fi,*fo;
fi = fopen("diviz.in","r");
fo = fopen("diviz.out","w");
int k, a, b;
fscanf(fi,"%d%d%d", &k, &a, &b);
char c = fgetc(fi);
while(!isdigit(c)) c = fgetc(fi);
for(int i = 0; i < 10; i++)
lastcif[i] = 205;
int n = 0;
d[0][0][0] = 1;
while(isdigit(c)){
int x = c - '0';
n++;
for(int len = 0; len <= b; len++)
for(int r = 0; r < k; r++)
d[n][len][r] = d[n - 1][len][r];
for(int len = 0; len < b; len++)
for(int r = 0; r < k; r++){
d[n][len + 1][(r * 10 + x) % k] += d[n - 1][len][r] - d[lastcif[x] - 1][len][r];
d[n][len + 1][(r * 10 + x) % k] %= MOD;
}
lastcif[x] = n;
c = fgetc(fi);
//for(int len = 0; len <= b; len++)
// printf("%d ", d[n][len][0]);
//printf("\n");
}
int ans = 0;
for(int len = a; len <= b; len++){
ans += d[n][len][0];
ans %= MOD;
}
fprintf(fo,"%d", ans);
fclose(fi);
fclose(fo);
return 0;
}