Cod sursa(job #289656)

Utilizator andreirulzzzUPB-Hulea-Ionescu-Roman andreirulzzz Data 26 martie 2009 21:21:03
Problema Koba Scor 70
Compilator fpc Status done
Runda aa Marime 1.27 kb
program koba;
const maxd=10000;
var t1,t2,t3,srez,s,divid,rezd,t4,rep,n,i:longint;
    v:array[1..maxd] of longint;
procedure initial;
begin
     assign(input,'koba.in');
     reset(input);
     read(input,n,t1,t2,t3);
     close(input);
     t1:=t1 mod 10;
     t2:=t2 mod 10;
     t3:=t3 mod 10;
     t4:=0;
     s:=t1+t2+t3;
end;
procedure secv;
begin
     t1:=v[maxd];t2:=v[maxd-1];t3:=v[maxd-2];
     for i:=maxd-1 downto 3 do
         if (v[i]=t1)and(v[i-1]=t2)and(v[i-2]=t3) then
            break;
     rep:=maxd-i;
     srez:=0;
     for i:=maxd-rep+1 to maxd do
         srez:=srez+v[i];
end;
procedure cutter;
begin
     for i:=4 to maxd do begin
         t4:=t3+t2*t1; t4:=t4 mod 10;s:=s+t4;
         v[i]:=t4;t1:=t2;t2:=t3;t3:=t4;
         end;
end;
begin
initial;
if n<maxd then
   for i:=1 to n-3 do begin
       t4:=t3+t2*t1;
       t4:=t4 mod 10;
       s:=s+t4;
       t1:=t2;
       t2:=t3;
       t3:=t4;
       end
else begin
     v[1]:=t1;v[2]:=t2;v[3]:=t3;
     cutter;
     secv;
     n:=n-maxd;               
     divid:=n div rep;
     s:=s+divid*srez;
     n:=n-divid*rep;
     for i:=1 to n do
         s:=s+v[rep+i];
     end;
assign(output,'koba.out');
rewrite(output);
write(output,s);
close(output);
end.