Pagini recente » Cod sursa (job #1216923) | Cod sursa (job #1236211) | Cod sursa (job #1464826) | Cod sursa (job #16613) | Cod sursa (job #2451643)
#include <bits/stdc++.h>
#define MOD 30103
///N=10^200-1
///K=100
///A=200
///B=200
using namespace std;
///
int a, b, k, i, j, l, p, q, out;
int lst[201], sol[201][201][100], nxt[201][10], last[10];
///
void read();
void solve();
void write();
int main()
{
read();
solve();
write();
return 0;
}
void read(){
freopen("diviz.in", "r", stdin);
scanf("%d%d%d", &k, &a, &b);
char c; int i=0; fgetc(stdin);
scanf("%c", &c);
while(c!='\n'){
lst[++i]=c-'0'; ++l;
scanf("%c", &c);
}
fclose(stdin);
}
void solve(){
for(i=0; i<10; ++i) last[i]=l+1;
for(i=l; i>=0; --i) {
for(j=0; j<10; ++j) nxt[i][j]=last[j];
last[lst[i]]=i;
}
for(i=1; i<10; ++i) sol[1][nxt[0][i]][i%k]=1;
for(i=1; i<b; ++i){
for(q=0; q<k; ++q){
for(j=i; j<=l; ++j){
for(p=0; p<=9; ++p) sol[i+1][nxt[j][p]][(q*10+p)%k]=(sol[i+1][nxt[j][p]][(q*10+p)%k]+sol[i][j][q])%MOD;
}
}
}
for(i=a; i<=b; ++i){
for(j=1; j<=l; ++j) out=(out+sol[i][j][0])%MOD;
}
}
void write(){
freopen("diviz.out", "w", stdout);
printf("%d", out);
fclose(stdout);
}