Description
形如 1 1 2 3 5 8 13 21 34 55 89 144....的数列,求裴波拉契数列的第n项。
Input
n (1〈 n 〈2^31)
Output
一个数为裴波拉契数列的第n项mod 10;
题解
a[1,1]:=0; a[1,2]:=1;
a[2,1]:=1; a[2,2]:=1;
代码
type
arr=array[1..2,1..2] of longint;
var
n:int64;
a,c:arr;
procedure mi(a,b:arr);
var
i,j,k:longint;
begin
fillchar(c,sizeof(c),0);
for i:=1 to 2 do
for j:=1 to 2 do
for k:=1 to 2 do
c[i,k]:=(c[i,k]+a[i,j]*b[j,k]) mod 10;
end;
procedure main(n:int64);
begin
if n<=1 then exit;
main(n div 2);
mi(c,c);
if odd(n) then mi(c,a);
end;
begin
readln(n); n:=n;
a[1,1]:=0; a[1,2]:=1;
a[2,1]:=1; a[2,2]:=1;
c:=a;
main(n);
writeln((c[2,2]) mod 10);
end.