Pagini recente » Cod sursa (job #313894) | Cod sursa (job #1189024) | Cod sursa (job #1120277) | Cod sursa (job #2245877) | Cod sursa (job #973966)
Cod sursa(job #973966)
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
#define NMAX 201
#define KMAX 101
#define MOD 30103
int d[NMAX][NMAX][KMAX],first[11][NMAX],r[101];
char c[NMAX+1];
int main ()
{
int n,i,j,k,sol,a,b,rest,last;
ifstream f("diviz.in");
ofstream g("diviz.out");
f>>k>>a>>b;
f>>(c+1);
f.close();
n=strlen(c+1);
first[c[n]-48][n]=n;
for(i=n-1;i>=1;i--) {
for(j=0;j<=9;j++)
first[j][i]=first[j][i+1];
first[c[i]-48][i]=i;
}
for(i=0;i<=100;i++)
r[i]=i%k;
for(i=1;i<=9;i++)
if(first[i][1])
d[first[i][1]][1][r[i]]=1;
for(i=1;i<=n;i++)
for(j=1;j<=b-1;j++)
for(rest=0;rest<=k-1;rest++) {
if(d[i][j][rest]==0)
continue;
for(last=0;last<=9;last++)
if(first[last][i+1]) {
d[first[last][i+1]][j+1][r[rest*10+last]]+=d[i][j][rest];
if(d[first[last][i+1]][j+1][r[rest*10+last]]>=MOD)
d[first[last][i+1]][j+1][r[rest*10+last]]-=MOD;
}
}
sol=0;
for(i=1;i<=n;i++)
for(j=a;j<=b;j++)
sol=(sol+d[i][j][0])%MOD;
g<<sol%MOD;
return 0;
}