Cod sursa(job #250606)
Utilizator | Data | 31 ianuarie 2009 12:16:28 | |
---|---|---|---|
Problema | Algoritmul lui Euclid extins | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 1.72 kb |
program eucl;
var f,g:text;
t,i,a,b,a1,a2,b1,b2,u,v,x,y,c,r,x0,y0:longint;
begin
assign(f,'euclid3.in');
assign(g,'euclid3.out');
rewrite(g);
reset(f);
readln(f,t);
for i:=1 to t do
begin
readln(f,a,b,c);
a1:=abs(a);
b1:=abs(b);
r:=a1 mod b1;
while r<>0 do
begin
a1:=b1;
b1:=r;
r:=a1 mod b1
end;
if c mod b1<>0 then writeln(g,0,' ',0)
else begin
a2:=a div b1;
c:=c div b1;
b2:=b div b1;
r:=a2 mod b2;
x0:=0;y0:=1;
x:=1;y:=-(a2 div b2);
while r<>0 do
begin
a2:=b2;
b2:=r;
r:=a2 mod b2;
u:=x;v:=y;
x:=x0-(a2 div b2)*x;
y:=y0-(a2 div b2)*y;
x0:=u;y0:=v
end;
if (a>0) and (b>0) then writeln(g,x0*c,' ',y0*c)
else if (a<0) and(b<0) and(c>0) then writeln(g,-x0*c,' ',-y0*c)
else if (a<0) and(b<0)and(c<0) then writeln(g,-x0*c,' ',-y0*c)
else if (((a<0)and(b>0))or((a>0)and(b<0))) and(c>0) then writeln(g,x0*c,' ',y0*c)
else if (((a<0)and(b>0))or((a>0)and(b<0))) and(c<0) then writeln(g,-x0*c,' ',-y0*c)
end;
end;
close(f);
close(g);
end.