首页 > 代码库 > CODEVS1533 Fibonacci数列 (矩阵乘法)

CODEVS1533 Fibonacci数列 (矩阵乘法)

嗯,,,矩阵乘法最基础的题了。

Program CODEVS1250;type  arr=array[1..2,1..2] of longint;var T,n,mo:longint;    a,b:arr;operator *(a,b:arr) c:arr;var i,j,k,sum:longint;begin  fillchar(c,sizeof(c),0);  for i:=1 to 2 do    for j:=1 to 2 do      begin        sum:=0;        for k:=1 to 2 do          sum:=(sum+a[i,k]*b[k,j]) mod mo;        c[i,j]:=sum;      end;  exit(c);end;procedure main;var i,j:longint;begin  readln(n,mo);  a[1,1]:=1; a[1,2]:=0; a[2,1]:=0; a[2,2]:=1;  b[1,1]:=0; b[1,2]:=1; b[2,1]:=1; b[2,2]:=1;  while n>0 do    begin      if n mod 2=1 then a:=a*b;      n:=n div 2;          b:=b*b;        end;  writeln((a[1,1]+a[1,2]) mod mo);end;begin  readln(T);  while T>0 do begin dec(T); main; end;end.

 

CODEVS1533 Fibonacci数列 (矩阵乘法)