Cod sursa(job #97284)

Utilizator Adrian001Vladulescu Adrian Adrian001 Data 5 noiembrie 2007 23:57:11
Problema Iepuri Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.25 kb
Program cel;
type matrice=array[1..3,1..3] of longint;
     vector=array[1..100] of byte;
var f,g:text;
    n,a1,b,c,x1,y,z,t,k,i,j:longint;
    a:matrice;
    x:vector;

procedure descompunere(n:longint);
Begin
k:=0;
While n>=2 do
 Begin
  inc(k);
  x[k]:=n mod 2;
  n:=n div 2;
 end;
inc(k);
x[k]:=1;
end;

procedure inmultire(var p:matrice;a,b:matrice);
var i,j,k:integer;
Begin
For i:=1 to 3 do
 For j:=1 to 3 do
  Begin
   p[i,j]:=0;
   For k:=1 to 3 do p[i,j]:=(p[i,j]+a[i,k]*b[k,j]) mod 666013;
   {p[i,j]:=p[i,j] mod 666013}
  end;
end;


procedure putere(var a:matrice);
var i,j:integer;
    d:matrice;
Begin
For i:=1 to 3 do
 For j:=1 to 3 do
  If i=j then d[i,j]:=1
         else d[i,j]:=0;
For i:=k downto 1 do
Begin
 inmultire(d,d,d);
 If x[i]=1 then inmultire(d,d,a);
end;
a:=d;
end;

Begin
Assign(f,'iepuri.in');Reset(f);
Assign(g,'iepuri.out');Rewrite(g);
Readln(f,t);
For i:=1 to t do
 Begin
  Readln(f,x1,y,z,a1,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 mod 666013;
  a[3,2]:=b mod 666013;
  a[3,3]:=a1 mod 666013;
  descompunere(n);
  putere(a);
  Writeln(g,(x1*a[1,1]+y*a[1,2]+z*a[1,3]) mod 666013);
 end;
Close(f);
Close(g);
end.