Pagini recente » Cod sursa (job #2192277) | Cod sursa (job #2330433) | Cod sursa (job #1403088) | Cod sursa (job #1138975) | Cod sursa (job #8321)
Cod sursa(job #8321)
#include <stdio.h>;
#include <stdlib.h>;
#include <string.h>;
long a[201][201][101],tot;
int cc,n,aa,b,k,i,j,r,t[201],cif[201][10];
int max_cif=10;
long mod=30103;
char c[200];
void citire()
{
freopen("divz.in","r",stdin);
scanf("%d%d%d\n",&k,&aa,&b);
scanf("%s",&c);
n=strlen(c);
for (i=0;i<n;++i)
t[i]=c[i]-'0';
fclose(stdin);
}
void cifre()
{
for (j=0;j<max_cif;++j)
cif[n-1][j]=-1;
cif[n-1][t[n-1]]=n-1;
for (i=n-2;i>=0;--i)
{
memcpy(cif[i],cif[i+1],sizeof(cif[i+1]));
cif[i][t[i]]=i;
}
}
void dinamica()
{
for (i=0;i<max_cif;++i)
a[1][cif[0][i]][i%k]=1;
for (i=1;i<=b;++i)
for (j=i-1;j<n-1;++j)
for (r=0;r<k;++r)
for (cc=0;cc<max_cif;++cc)
if (cif[j+1][cc] != -1)
{
a[i+1][cif[j+1][cc]][((r*10)+cc)%k] += a[i][j][r];
a[i+1][cif[j+1][cc]][((r*10)+cc)%k] %= mod;
if (a[3][0][0]==1)
i=i;
}
}
int main()
{
citire();
cifre();
dinamica();
for (i=aa;i<=b;++i)
for (j=0;j<n;++j)
tot += a[i][j][0];
tot %= mod;
freopen("divz.out","w",stdout);
printf("%ld",tot);
fclose(stdout);
return 0;
}