Cod sursa(job #429214)

Utilizator zseeZabolai Zsolt zsee Data 29 martie 2010 22:28:24
Problema Al k-lea termen Fibonacci Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.72 kb
const f:array[1..9] of byte = (1,1,2,3,5,8,13,21,34);
      modd = 666013;
var be,ki:text;
    n:qword;

function fib(n:qword):qword;
var np2m1,np2:qword;
begin
 if n < 10 then fib:=f[n]
   else
     begin
      if odd(n) then
          begin
            np2:= fib(n div 2);
            np2m1:= fib((n div 2)-1);
            fib := np2m1 * (np2m1 + np2) + np2 * (2*np2 + np2m1);
          end
         else
          begin
            np2:= fib(n div 2);
            np2m1:= fib((n div 2)-1);
            fib := np2 * ( 2* np2m1 + np2 );
          end;
     end;
end;

begin
 assign(be,'kfib.in');
 reset(be);
 assign(ki,'kfib.out');
 rewrite(ki);
 readln(be,n);
 writeln(ki,fib(n));
 close(ki);
end.