Pagini recente » Cod sursa (job #1064035) | Borderou de evaluare (job #133061) | Cod sursa (job #790154) | Cod sursa (job #2603613) | Cod sursa (job #1141739)
#include<fstream>
#include<cstring>
#define mod 30103
#define N 210
using namespace std;
ifstream f("diviz.in");
ofstream g("diviz.out");
int D[2][N][N/2],fc[N][N],k,t,p,cif,a,b,i,sol,met[N],j,n,r;
char s[N];
int main ()
{
f>>k>>a>>b;
f>>(s+1);
n=strlen(s+1);
for(i=1;i<=n;++i)
for(j=0;j<=9;++j)
for(t=i;t<=n;++t)
if(s[t]==j+'0')
{
fc[j][i]=t;
break;
}
for(i=1;i<=n;++i)
if(!met[s[i]]&&(s[i]!='0'))
{
met[s[i]]=1;
D[1][i][(s[i]-'0')%k]=1;
}
p=1;
for(j=1;j<b;++j)
{
p=1-p;
for(i=1;i<=n;++i)
memset(D[p][i],0,sizeof(D[p][i]));
for(i=1;i<=n;++i)
{
for(r=0;r<k;++r)
for(cif=0;cif<=9;++cif)
{
D[p][fc[cif][i+1]][(r*10+cif)%k]+=D[1-p][i][r];
if(D[p][fc[cif][i+1]][(r*10+cif)%k]>=mod)
D[p][fc[cif][i+1]][(r*10+cif)%k]-=mod;
}
}
if(j+1>=a)
for(i=1;i<=n;++i)
{
sol+=D[p][i][0];
if(sol>=mod)
sol-=mod;
}
}
g<<sol;
return 0;
}