Cod sursa(job #876579)

Utilizator rares96cheseliRares Cheseli rares96cheseli Data 11 februarie 2013 22:01:58
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.39 kb
type vect=array[0..500] of qword;
var u,v:vect; n,k,i,j,p,l,d:word; r,m:integer;
    f,g:text;
begin
assign(f,'expozitie.in');reset(f);
assign(g,'expozitie.out');rewrite(g);
read(f,n,d,k);
r:=n-k*d;
m:=r+d-1;
if r<0 then writeln(g,0)
else if r=0 then writeln(g,1)
else if r=1 then writeln(g,d)
else begin
     v[0]:=1; u[0]:=1; for i:=1 to r do v[i]:=0;
     i:=1; j:=1;
     while i<=m-r do begin
                     if j=1 then begin
                                 for p:=1 to r do u[p]:=v[p]+v[p-1];
                                 j:=0;
                                 end
                            else begin
                                 for p:=1 to r do v[p]:=u[p]+u[p-1];
                                 j:=1;
                                 end;
                     inc(i);
                     end;
     l:=0;
     while i<=m do begin
                   if j=1 then begin
                               for p:=1+l to r do u[p]:=v[p]+v[p-1];
                               j:=0; inc(l);
                               end
                          else begin
                               for p:=1+l to r do v[p]:=u[p]+u[p-1];
                               j:=1; inc(l);
                               end;
                   inc(i);
                   end;
     if j=1 then write(g,v[r])
            else write(g,u[r]);
     end;
close(f); close(g);
end.