Cod sursa(job #600466)

Utilizator Buzu_Tudor_RoCont vechi Buzu_Tudor_Ro Data 1 iulie 2011 21:36:39
Problema Al k-lea termen Fibonacci Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.29 kb
Program Fibonacci;
uses dos;

const limit = 10000;
type vector = array[1..10000] of integer;
var fi , fo : text;
    n, m : longint;
    i,j,k : longint;
    a,b:vector;
    ore,minute,secunde,sutimi : word;
    s1,s2 : real;

Procedure suma(x,y : vector);
var rest,nr,i1 : longint;
begin
      rest:=0;
      for i1:=limit downto k do begin
                                nr:=x[i1]+y[i1]+rest;
                                rest:=nr div 10;
                                y[i1]:=nr mod 10;
                                end;
      if rest=0 then k:=i1
                else begin
                     k:=k-1;
                     y[k]:=rest;
                     end;
      a:=b;
      b:=y;
end;

begin gettime(ore,minute,secunde,sutimi);
      s1:=3600*ore+60*minute+secunde+0.01*sutimi;
      assign(fi,'FIB.in'); reset(fi); read(fi,n,m); close(fi);
      assign(fo,'FIB.out'); rewrite(fo);
      a[limit]:=1;
      b[limit]:=1;
      k:=limit;

      for i:=3 to n do suma(a,b);

      for i:=k to limit do write(fo,b[i]);
      writeln(fo);
      if k+m-1<=limit then writeln(fo,b[k+m-1]);
      gettime(ore,minute,secunde,sutimi);
      s2:=3600*ore+60*minute+secunde+0.01*sutimi;
      writeln(fo,'Timpul de executie = ',s2-s1 : 5:2);
      close(fo);
end.