Cod sursa(job #615088)

Utilizator ctlin04UAIC.VlasCatalin ctlin04 Data 8 octombrie 2011 15:59:06
Problema Iepuri Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.2 kb
Program iepuri;
 const md=666013;
 type tip=array [1..3,1..3] of int64;
 var a,s,aux:tip;
     b1:array [1..1 shl 15] of char;
     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
  aux[i,j]:=0;
 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');
   settextbuf(fi,b1);
 reset(fi); rewrite(fo);
 readln(fi,k);
  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.