Pagini recente » Cod sursa (job #3235679) | Cod sursa (job #2327627) | Cod sursa (job #3259881) | Cod sursa (job #1377022) | Cod sursa (job #553062)
Cod sursa(job #553062)
#include<stdio.h>
#include<string>
#define maxN 210
#define MOD 30103
FILE*f=fopen("diviz.in","r");
FILE*g=fopen("diviz.out","w");
int K,A,B,N,Rez,k,i,ii,j,cf;
int Fap[11][maxN],D1[maxN][105],D2[maxN][105];
char X[maxN];
int main () {
fscanf(f,"%d %d %d\n%s",&K,&A,&B,X+1);
N = strlen(X+1);
for ( i = 1 ; i <= N ; ++i ){
X[i] = X[i] - '0';
}
for ( cf = 0 ; cf <= 9 ; ++cf ){
for ( i = N ; i >= 1 ; --i ){
if ( X[i] == cf )
Fap[cf][i] = i;
else
Fap[cf][i] = Fap[cf][i+1];
}
}
for ( cf = 1; cf <= 9 ; ++cf ){
D1[ Fap[cf][1] ][ cf % K ] = 1;
}
for ( j = 1 ; j < B ; ++j ){
//lungime j
for ( i = j ; i <= N ; ++i ){
//se termina pe pozitia i
for ( k = 0 ; k < K ; ++k ){
if ( !D1[i][k] ) continue ;
for ( cf = 0 ; cf <= 9 ; ++cf ){
D2[ Fap[cf][i+1] ][ (k * 10 + cf ) % K ] += D1[i][k];
if ( D2[ Fap[cf][i+1] ][ (k * 10 + cf ) % K ] >= MOD )
D2[ Fap[cf][i+1] ][ (k * 10 + cf ) % K ] -= MOD;
}
}
}
if ( j >= A ){
for ( i = j ; i <= N ; ++i ){
Rez += D1[i][0];
if ( Rez >= MOD )
Rez -= MOD;
}
if ( j == B - 1 ){
for ( i = j ; i <= N ; ++i ){
Rez += D2[i][0];
if ( Rez >= MOD )
Rez -= MOD;
}
}
}
if ( j < B - 1 ){
memcpy(D1,D2,sizeof(D2));
memset(D2,0,sizeof(D2));
}
}
fprintf(g,"%d\n",Rez);
fclose(f);
fclose(g);
return 0;
}