Pagini recente » Cod sursa (job #1403058) | Cod sursa (job #1331756) | Cod sursa (job #2450821) | Cod sursa (job #1471867) | Cod sursa (job #1383634)
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
int k,p,u,i,j,poz,c,r,ii,b[201][100],a[201][100],n,pp[200][10],v[201];
char s[201];
int main()
{
fin>>k>>p>>u;
fin>>s+1;
n=strlen(s+1);
for(i=0;i<=9;i++)
for(j=0;j<n;j++)
for(ii=j+1;ii<=n;ii++)
{
if(s[ii]-'0'==i)
{
pp[j][i]=ii;
break;
}
}
/*for(poz=1;poz<=n;poz++)
{
if(s[poz]-'0')
{
a[poz][(s[poz]-'0')%k]++;
}
v[1]+=a[poz][0];
}*/
for(c=1;c<=9;c++)
{
poz=pp[0][c];
if(poz)
{
a[poz][c%k]++;
}
v[1]+=a[poz][0];
}
// for(int l=1;l<=n;l++)
// {
// for(int c=0;c<k;c++)
// fout<<a[l][c]<<' ';
// fout<<'\n';
// }
// fout<<'\n';
for(i=2;i<=n;i++)
{
for(j=i-1;j<n;j++)
{
for(c=0;c<=9;c++)
{
poz=pp[j][c];
if(poz)
{
for(r=0;r<k;r++)
{
if(a[j][r]!=0)
{
b[poz][(r*10+c)%k]+=a[j][r];
b[poz][(r*10+c)%k]%=30103;
if((r*10+c)%k==0)
v[i]+=a[j][r];
v[i]%=30103;
}
}
}
}
}
memcpy(a,b,sizeof(a));
memset(b,0,sizeof(b));
/*for(int l=1;l<=n;l++)
{
for(int c=0;c<k;c++)
fout<<a[l][c]<<' ';
fout<<'\n';
}
fout<<'\n';*/
}
int sol=0;
for(i=p;i<=u;i++)
sol+=v[i]%30103;
fout<<sol%30103;
return 0;
}