Pagini recente » Cod sursa (job #664262) | Cod sursa (job #145616) | Cod sursa (job #2837729) | Cod sursa (job #1645886) | Cod sursa (job #756435)
Cod sursa(job #756435)
#include <cstdio>
#include <cstring>
const int MAX_N = 256 ;
const int MAX_K = 128 ;
const int MOD = 30103 ;
int n,k,a,b,cifra,sol ;
int nr[MAX_N];
char s[MAX_N];
int d[MAX_N][MAX_K][10];
void citire()
{
scanf("%d %d %d\n",&k,&a,&b);
scanf("%s\n",s);
n = strlen(s);
for(int i=0;i<n;++i)
nr[i+1] = s[i] - '0';
}
void rezolvare()
{
for(int pas=1;pas<=n;++pas)
{
cifra = nr[pas];
for(int i=n-1;i>0;--i)
{
for(int j=0;j<k;++j)
d[i+1][j][cifra] = 0;
for(int j=0;j<k;++j)
{
int t = (j * 10 + cifra) % k;
for(int c=0;c<=9;++c)
{
d[i+1][t][cifra] += d[i][j][c];
if(d[i+1][t][cifra] >= MOD)
d[i+1][t][cifra] -= MOD;
}
}
}
if(cifra)
d[1][cifra % k][cifra] = 1;
}
for(int i=a;i<=b;++i)
{
for(int j=0;j<10;++j)
{
sol += d[i][0][j];
if (sol >= MOD)
sol -= MOD;
}
}
printf("%d\n", sol);
}
int main()
{
freopen("diviz.in","r",stdin);
freopen("diviz.out","w",stdout);
citire();
rezolvare();
return 0;
}