Pagini recente » Cod sursa (job #107235) | Cod sursa (job #2101697) | Cod sursa (job #169138) | Cod sursa (job #2797258) | Cod sursa (job #2988176)
#include<bits/stdc++.h>
#define int long long
#define MOD 30103
using namespace std;
ifstream f("diviz.in");
ofstream g("diviz.out");
int dp[205][205][102],first[11][205];//dp[i][j][l]=numarul de subsiruri distincte care au ultima cifra cea de a i a cifra din s de lungime j si restul modulo k egal cu l
//sol=dp[i][l][0]+dp[i][l+1][0]+..dp[i][r][0]
char s[205];
signed main()
{
int k,a,b,i,n,j,l,r;
f>>k>>a>>b;
f>>(s+1);
n=strlen(s+1);
for(i=0;i<n;i++)
for(j=i+1;j<=n;j++)
if(first[s[j]-'0'][i]==0)
first[s[j]-'0'][i]=j;
for(i=1;i<=9;i++)
dp[first[i][0]][1][i%k]=1;
for(l=1;l<=b;l++)
{
for(i=l;i<=n;i++)
{
for(r=0;r<k;r++)
{
for(j=0;j<=9;j++)
if(first[j][i]!=0)
dp[first[j][i]][l+1][(r*10+j)%k]=(dp[first[j][i]][l+1][(r*10+j)%k]+dp[i][l][r])%MOD;
}
}
}
int sol=0;
for(i=1;i<=n;i++)
for(l=a;l<=b;l++)
{
sol=(sol+dp[i][l][0])%MOD;
}
g<<sol;
return 0;
}