A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
18
Task/Fibonacci-sequence/Delphi/fibonacci-sequence-1.delphi
Normal file
18
Task/Fibonacci-sequence/Delphi/fibonacci-sequence-1.delphi
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
function FibonacciI(N: Word): UInt64;
|
||||
var
|
||||
Last, New: UInt64;
|
||||
I: Word;
|
||||
begin
|
||||
if N < 2 then
|
||||
Result := N
|
||||
else begin
|
||||
Last := 0;
|
||||
Result := 1;
|
||||
for I := 2 to N do
|
||||
begin
|
||||
New := Last + Result;
|
||||
Last := Result;
|
||||
Result := New;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
function Fibonacci(N: Word): UInt64;
|
||||
begin
|
||||
if N < 2 then
|
||||
Result := N
|
||||
else
|
||||
Result := Fibonacci(N - 1) + Fibonacci(N - 2);
|
||||
end;
|
||||
37
Task/Fibonacci-sequence/Delphi/fibonacci-sequence-3.delphi
Normal file
37
Task/Fibonacci-sequence/Delphi/fibonacci-sequence-3.delphi
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
function fib(n:Int64):int64;
|
||||
|
||||
type TFibMat = array[0..1] of array[0..1] of int64;
|
||||
|
||||
function FibMatMul(a,b:TFibMat):TFibMat;
|
||||
var i,j,k:integer;
|
||||
tmp:TFibMat;
|
||||
begin
|
||||
for i:=0 to 1 do
|
||||
for j:=0 to 1 do
|
||||
begin
|
||||
tmp[i,j]:=0;
|
||||
for k:=0 to 1 do tmp[i,j]:=tmp[i,j]+a[i,k]*b[k,j];
|
||||
end;
|
||||
FibMatMul:=tmp;
|
||||
end;
|
||||
|
||||
function FibMatExp(a:TFibMat;n:int64):TFibmat;
|
||||
begin
|
||||
if n<=1 then fibmatexp:=a else
|
||||
if (n mod 2 = 0) then FibMatExp:=FibMatExp(FibMatMul(a,a), n div 2) else
|
||||
if (n mod 2 = 1) then FibMatExp:=FibMatMul(a,FibMatExp(FibMatMul(a,a),(n) div 2));
|
||||
end;
|
||||
|
||||
|
||||
var
|
||||
matrix:TFibMat;
|
||||
|
||||
begin
|
||||
matrix[0,0]:=1;
|
||||
matrix[0,1]:=1;
|
||||
matrix[1,0]:=1;
|
||||
matrix[1,1]:=0;
|
||||
if n>1 then
|
||||
matrix:=fibmatexp(matrix,n-1);
|
||||
fib:=matrix[0,0];
|
||||
end;
|
||||
Loading…
Add table
Add a link
Reference in a new issue