Pagini recente » Cod sursa (job #1568571) | Cod sursa (job #556130) | Cod sursa (job #1637259) | Cod sursa (job #2251866) | Cod sursa (job #1553916)
#include <cstdio>
#define MAXN 200
#define MAXK 100
#define MOD 30103
int v[MAXN],mat[10][MAXN+1],d[MAXN+1][MAXK][MAXN+1];
int main(){
FILE*fi,*fout;
int i,j,n,k,a,b,con,cif,r;
char c;
fi=fopen("diviz.in" ,"r");
fout=fopen("diviz.out" ,"w");
fscanf(fi,"%d%d%d" ,&k,&a,&b);
c=fgetc(fi);
c=fgetc(fi);
n=0;
while(c>='0'&&c<='9'){
v[++n]=c-'0';
c=fgetc(fi);
}
for(cif=0;cif<=9;cif++){
i=0;
while(i<n){
j=i+1;
while(j<=n&&v[j]!=cif)
j++;
if(j==n+1)
i=n;
else{
while(i<j){
mat[cif][i]=j;
i++;
}
}
}
}
con=0;
for(i=1;i<=9;i++)
if(mat[i][0]>0)
d[mat[i][0]][i%k][0]=1;
for(j=1;j<=b;j++){
for(i=j;i<n;i++){
for(r=0;r<k;r++)
for(cif=0;cif<=9;cif++)
if(mat[cif][i]>0)
d[mat[cif][i]][(r*10+cif)%k][j&1]=d[mat[cif][i]][(r*10+cif)%k][j&1]+d[i][r][1-j&1];
for(cif=0;cif<=9;cif++)
d[mat[cif][i]][(r*10+cif)%k][j&1]%=MOD;
}
for(i=j;i<=n;i++)
if(j>=a&&j<=b)
con=con+d[i][0][1-j&1];
con=con%MOD;
for(i=j;i<=n;i++)
for(r=0;r<k;r++)
d[i][r][1-j&1]=0;
}
fprintf(fout,"%d" ,con);
fclose(fi);
fclose(fout);
return 0;
}