Pagini recente » Cod sursa (job #1842632) | Cod sursa (job #1182493) | Cod sursa (job #1894955) | Istoria paginii runda/craciun-viteza-3/clasament | Cod sursa (job #464845)
Cod sursa(job #464845)
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>
using namespace std;
#define file_in "diviz.in"
#define file_out "diviz.out"
#define nmax 212
int k,a,b,n;
char s[nmax];
int v[nmax];
int d[nmax][nmax/2][10];
void citire()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d %d\n", &k, &a, &b);
gets(s+1);
n=strlen(s+1);
for (int i=1;i<=n;++i)
v[i]=s[i]-'0';
}
#define mod 30103
void solve()
{
int q,i,j,t,cif,c;
for (q=1;q<=n;++q)
{
cif=v[q];
for (i=n-1;i>=1;--i)
{
for (j=0;j<k;++j)
d[i+1][j][cif]=0;
for (j=0;j<k;++j)
{
t=(cif+j*10)%k;
for (c=0;c<10;++c)
{
d[i+1][t][cif]+=d[i][j][c];
if (d[i+1][t][cif]>=mod)
d[i+1][t][cif]%=mod;
}
}
}
if (cif!=0)
d[1][cif%k][cif]=1;
}
int suma=0;
for (i=a;i<=b;++i)
for (j=0;j<10;++j)
{
suma+=d[i][0][j];
if (suma>=mod)
suma%=mod;
}
printf("%d\n", suma);
}
int main()
{
citire();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}