Pagini recente » Cod sursa (job #2331233) | Cod sursa (job #2693242) | Cod sursa (job #303798) | Cod sursa (job #1233814) | Cod sursa (job #1553900)
#include <cstdio>
#define MAXN 200
#define MAXK 100
#define MOD 30103
int v[MAXN],d[MAXN+1][MAXK][2],mat[10][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])%MOD;
for(i=j;i<=n;i++)
for(r=0;r<k;r++){
if(r==0&&j>=a&&j<=b)
con=(con+d[i][r][1-j&1])%MOD;
d[i][r][1-j&1]=0;
}
}
fprintf(fout,"%d" ,con);
fclose(fi);
fclose(fout);
return 0;
}