Cod sursa(job #615071)

Utilizator ctlin04UAIC.VlasCatalin ctlin04 Data 8 octombrie 2011 15:15:10
Problema Iepuri Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.11 kb
Program iepuri;
 const md=666013;
 type tip=array [1..3,1..3] of int64;
 var a,s,aux:tip;
     ok:boolean;
     k,i,x,y,b,c,n,h,g,z,j:longint;
     fi,fo:text;
procedure inmulteste(var a:tip; b:tip);
var i,j,k:longint;
begin
 for i:=1 to 3 do
  for j:=1 to 3 do
   for k:=1 to 3 do
    aux[i,j]:=(aux[i,j]+((a[i,k]*b[k,j]) mod md)) mod md;
 a[1]:=aux[1]; a[2]:=aux[2]; a[3]:=aux[3];
end;
procedure pow(t:longint);
 begin
  while t>0 do
   if t mod 2=0 then begin
                      inmulteste(a,a);
                      t:=t div 2;
                      end
   else begin
          inmulteste(s,a);
           t:=t-1;
           end;
 end;
begin
 assign(fi,'iepuri.in');
  assign(fo,'iepuri.out');
 reset(fi); rewrite(fo);
 readln(fi,k); ok:=true;
  for i:=1 to k do begin
   readln(fi,x,y,z,j,b,c,n);
    a[1,1]:=0; a[1,2]:=1; a[1,3]:=0;
    a[2,1]:=0; a[2,2]:=0; a[2,3]:=1;
    a[3,1]:=c; a[3,2]:=b; a[3,3]:=j;
    s[1]:=a[1]; s[2]:=a[2]; s[3]:=a[3];
    pow(n-1);
    writeln(fo,(((s[1,1]*x) mod md)+((s[1,2]*y) mod md)+((s[1,3]*z) mod md)) mod md);
                  end;
 close(fo);
end.