【斐波那契数列】选拔队员

来源:互联网 发布:淘宝首页装修雪花代码 编辑:程序博客网 时间:2024/04/30 06:22

 

=======================

==============================

var  t,m:longint;  jz:array[1..2,1..2]of longint;  n1,m1:longint;procedure init;begin  assign(input,'seat.in');  assign(output,'seat.out');  reset(input); rewrite(output);end;procedure terminate;begin  close(input); close(output);  halt;end;procedure quick(m:longint);var  i,j,k:longint;  jz_t,jz_n:array[1..2,1..2]of longint;begin  jz_t:=jz;  jz[1,1]:=1; jz[1,2]:=0;  jz[2,1]:=0; jz[2,2]:=1;  while n1<>0 do    begin      if n1 and 1=1 then        begin          fillchar(jz_n,sizeof(jz_n),0);          for i:=1 to 2 do            for j:=1 to 2 do              for k:=1 to 2 do                jz_n[i,j]:=(jz_n[i,j]+jz_t[i,k]*jz[k,j])mod m;          jz:=jz_n;        end;      fillchar(jz_n,sizeof(jz_n),0);      for i:=1 to 2 do        for j:=1 to 2 do          for k:=1 to 2 do            jz_n[i,j]:=(jz_n[i,j]+jz_t[i,k]*jz_t[k,j]) mod m;      jz_t:=jz_n;      n1:=n1 shr 1;    end;end;procedure main;var  i,x:longint;  ans:longint;begin  readln(t,m);  for i:=1 to t do    begin      jz[1,1]:=0; jz[1,2]:=1;      jz[2,1]:=1; jz[2,2]:=1;      readln(n1);      quick(m);      writeln((jz[2,1]+jz[2,2])mod m);    end;end;begin  init;  main;  terminate;end.


 

原创粉丝点击