Pagini recente » Cod sursa (job #2158695) | Cod sursa (job #862399) | Cod sursa (job #685405) | Cod sursa (job #467375) | Cod sursa (job #13730)
Cod sursa(job #13730)
program diviz;
const
fin='diviz.in';
fout='diviz.out';
eps=30103;
inf=1000;
var
cif,k,a,b,i,j,l,m,n,r:longint;
nr:array[0..201] of integer;
first:array[0..9,0..201] of integer;
ch:char;
sum:longint;
new,old:byte;
c:array[0..1,0..200,0..100] of longint;
begin
assign(input,fin);
reset(input);
readln(k,a,b);
nr[0]:=0;
while not(seekeof(input)) do
begin
read(ch);
inc(nr[0]);
nr[nr[0]]:=ord(ch)-48;
end;
close(input);
assign(output,fout);
rewrite(output);
for cif:=0 to 9 do
first[cif,nr[0]+1]:=inf;
for cif:=0 to 9 do
for i:=nr[0] downto 1 do
begin
if nr[i]=cif then
first[cif,i]:=i
else
first[cif,i]:=first[cif,i+1];
end;
for i:=1 to nr[0] do
if nr[i]<>0 then
if i=first[nr[i],1] then
begin
inc(c[1,i,nr[i] mod k]);
end;
new:=1;old:=0;
if 1>=a then
begin
for i:=1 to nr[0] do
sum:=(sum+c[new,i,0])mod eps;
end;
for l:=2 to b do
begin
old:=new;new:=old xor 1;
for i:=0 to nr[0] do
for r:=0 to k-1 do
c[new,i,r]:=0;
for r:=0 to k-1 do
for i:=1 to nr[0] do
begin
for cif:=0 to 9 do
begin
if first[cif,i+1]<>inf then
begin
c[new,first[cif,i+1],(r*10+cif)mod k]:=(c[new,first[cif,i+1],(r*10+cif)mod k]+c[old,i,r])mod eps;
end;
end;
end;
if l>=a then
begin
for i:=1 to nr[0] do
sum:=(sum+c[new,i,0])mod eps;
end;
end;
writeln(sum);
close(output);
end.