斐波那契_矩阵乘法

来源:互联网 发布:淘宝如何退货 编辑:程序博客网 时间:2024/04/30 08:22

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.
1 0
原创粉丝点击