Pagini recente » Cod sursa (job #1846395) | Cod sursa (job #1047182) | Cod sursa (job #2726888) | Cod sursa (job #2924878) | Cod sursa (job #3216906)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("diviz.in");
ofstream fout("diviz.out");
int d[105][205];
int n,k,a,b;
char s[205];
const int mod=30103;
const int INF = 1e9;
int main()
{
fin>>k>>a>>b;
fin>>s;
for(int r=0; r<k; r++)
for(int l=0; l<=b; l++)
d[r][l]=INF;
d[0][0]=1;
for(int i=0; s[i]; i++)
{
for(int l=b-1; l>0; l--)
for(int r=0; r<k; r++)
if(d[r][l]!=INF)
{
if(d[(r*10 + s[i]-'0')%k][l+1]==INF)
d[(r*10 + s[i]-'0')%k][l+1]=d[r][l];
else
d[(r*10 + s[i]-'0')%k][l+1]=(d[(r*10 + s[i]-'0')%k][l+1] + d[r][l])%mod;
}
if(s[i]-'0'>0)
{
int l = 0;
for(int r=0; r<k; r++)
if(d[r][l]!=INF)
{
if(d[(r*10 + s[i]-'0')%k][l+1]==INF)
d[(r*10 + s[i]-'0')%k][l+1]=d[r][l];
else
d[(r*10 + s[i]-'0')%k][l+1]=(d[(r*10 + s[i]-'0')%k][l+1] + d[r][l])%mod;
}
}
}
int sol = 0;
for(int i = a; i<=b; i++)
if(d[0][i]!=INF)
sol =(sol + d[0][i])%mod;
fout<<sol;
}