Cod sursa(job #210814)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 29 septembrie 2008 17:28:59
Problema Iepuri Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.95 kb
type mat=array[1..3,1..3] of int64;

var m,m2:mat;
    f,g:text;
    t,q,a,b,c,x,y,z,n:longint;

procedure inm(var a:mat; b:mat);
 var i,j,k:longint;
     c:mat;
 begin
  for i:=1 to 3 do
   for j:=1 to 3 do begin
    c[i,j]:=0;
    for k:=1 to 3 do
     c[i,j]:=(c[i,j]+a[i,k]*b[k,j]) mod 666013;
   end;
  a:=c;
 end;

procedure lg(n:longint);
 begin
  if n<>1 then begin
   lg(n shr 1);
   inm(m,m);
   if n and 1=1 then
    inm(m,m2);
  end;
 end;

procedure solve;
 begin
  read(f,x,y,z,a,b,c,n);
  m[1,1]:=0; m[1,2]:=1; m[1,3]:=0;
  m[2,1]:=0; m[2,2]:=0; m[2,3]:=1;
  m[3,1]:=c; m[3,2]:=b; m[3,3]:=a;
  m2:=m;
  lg(n);
  m2[1,1]:=x; m2[1,2]:=0; m2[1,3]:=0;
  m2[2,1]:=y; m2[2,2]:=0; m2[2,3]:=0;
  m2[3,1]:=z; m2[3,2]:=0; m2[3,3]:=0;
  inm(m,m2);
  writeln(g,m[1,1]);
 end;

begin
 assign(f,'iepuri.in'); reset(f);
 assign(g,'iepuri.out'); rewrite(g);
 read(f,t);
 for q:=1 to t do
  solve;
 close(f); close(g);
end.