Pagini recente » Cod sursa (job #2106779) | Cod sursa (job #2312445) | Cod sursa (job #463553) | Cod sursa (job #1728366) | Cod sursa (job #1141853)
#include<fstream>
#include<cstring>
#define mod 30103
#define N 210
using namespace std;
ifstream f("diviz.in");
ofstream g("diviz.out");
int k,t,p,nr,np,cif,a,b,i,sol,met[N],j,n,r;
int D[2][N][N/2];
unsigned char fc[N][N];
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;
memset(D[p],0,sizeof(D[p]));
for(i=1;i<=n;++i)
{
for(r=0;r<k;++r)
if(D[1-p][i][r])
for(cif=0;cif<=9;++cif)
D[p][fc[cif][i+1]][(r*10+cif)%k]+=D[1-p][i][r];
}
for(r=0;r<k;++r)
for(i=1;i<=n;++i)
D[p][i][r]%=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;
}