Pagini recente » Cod sursa (job #767751) | Istoria paginii runda/simulare_shumen_4 | Cod sursa (job #1337985) | Cod sursa (job #1685068) | Cod sursa (job #1773502)
#include <cstdio>
#include <cstring>
const int lm=210,km=110,X=30103;
int p[11][lm][km], a[lm][km], b[lm][km], v[lm], k, aa, bb, t, n;
char s[lm];
int main()
{
freopen("diviz.in","r",stdin);
freopen("diviz.out","w",stdout);
scanf("%d %d %d\n",&k,&aa,&bb);
scanf("%s",s);
n=strlen(s);
int i, j, r, x, c;
for(i=0; i<n; i++)
v[i+1]=s[i]-'0';
for(i=1; i<=n; i++)
{
c=v[i]%k;
if (v[i]) a[1][c]=1;
for (j=2; j<=i; j++)
{
for (r=0; r<k; r++)
{
x=10*r%k+c;
x=x%k;
a[j][x]+=b[j-1][r];
a[j][x]%=X;
}
}
for (j=1; j<=i; j++)
for (r=0; r<k; r++)
{
if (p[v[i]][0][0]>0)
{
a[j][r]=a[j][r]-p[v[i]][j][r];
if (a[j][r]<0) a[j][r]+=X;
a[j][r]%=X;
}
p[v[i]][j][r]+=a[j][r];
p[v[i]][j][r]%=X;
}
p[v[i]][0][0]++;
for (j=1; j<=n; j++)
for (r=0; r<k; r++)
{
b[j][r]+=a[j][r];
b[j][r]%=X;
a[j][r]=0;
}
}
for (i=aa; i<=bb; i++) t=(t+b[i][0])%X;
printf("%d",t);
}