Pagini recente » Cod sursa (job #2199632) | Cod sursa (job #1281829) | Cod sursa (job #1322868) | Cod sursa (job #3000084) | Cod sursa (job #2984974)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
const int dim=209,mod=30103;
char s[dim];
int n,a,b,k,c[dim];
int nxt[dim][10];
int dp[2][dim][109];
signed main(){
fin>>k>>a>>b;
fin>>s;
n=strlen(s);
for(int i=1;i<=n;i++){
c[i]=s[i-1]-'0';
}
for(int i=0;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(!nxt[i][c[j]]){
nxt[i][c[j]]=j;
}
}
}
for(int i=1;i<=9;i++){
dp[1][nxt[0][i]][i%k]=1;
}
int ans=0;
for(int len=1;len<=b;len++){
for(int i=len;i<=n;i++){
for(int r=0;r<k;r++){
for(int j=0;j<=9;j++){
if(nxt[i][j]){
dp[(len+1)%2][nxt[i][j]][(r*10+j)%k]+=dp[len%2][i][r];
dp[(len+1)%2][nxt[i][j]][(r*10+j)%k]%=mod;
}
}
}
if(a<=len&&len<=b){
ans+=dp[len%2][i][0];
ans%=mod;
}
for(int r=0;r<k;r++){
dp[len%2][i][r]=0;
}
}
}
fout<<ans;
}