Cod sursa(job #407941)

Utilizator doruletzPetrican Teodor doruletz Data 2 martie 2010 19:01:03
Problema Ecuatie Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.16 kb
program ecuatie;

var p1,q1,p2,q2:array[0..30000000]of longint;
    x1,x2,a,b,c,n,i,j,delta,pp1,qq1:longint;
    t:text;

function max(a,b:longint):longint;
begin
 if a>b then max:=a else max:=b;
end;

begin
 assign(t,'ecuatie.in'); reset(t);
 readln(t,a,b,c,n);
 close(t);
 delta:=b*b - 4*a*c;
 x1:=(-b+trunc(sqrt(delta)))div(2*a);
 x2:=(-b-trunc(sqrt(delta)))div(2*a);

 pp1:=a;
 qq1:=-x2*a;

 for i:=max(qq1,pp1) downto 1 do
  if (qq1 mod i = 0)and(pp1 mod i = 0) then begin
   inc(j);
   inc(j);
   p1[j]:=pp1 div i;
   q1[j]:=qq1 div i;
   p2[j]:=a div p1[j];
   q2[j]:=c div q1[j];
  end;

 for i:=1 to j do if i mod 2=0 then begin
  p1[j-i+1]:=p2[i];
  q1[j-i+1]:=q2[i];
  p2[j-i+1]:=p1[i];
  q2[j-i+1]:=q1[i];
 end;


 for i:=1 to j do begin
  p1[i+j]:=p1[i];
  p1[i]:=-p1[j-i+1];

  q1[i+j]:=q1[i];
  q1[i]:=-q1[j-i+1];

  p2[i+j]:=p2[i];
  p2[i]:=-p2[j-i+1];

  q2[i+j]:=q2[i];
  q2[i]:=-q2[j-i+1];
 end;


 assign(t,'ecuatie.out'); rewrite(t);
 write(t,'(',p1[n],'x');
 if q1[n]>0 then write(t,'+');
 write(t,q1[n],')(',p2[n],'x');
 if q2[n]>0 then write(t,'+');
 write(t,q2[n],')');
 readln;
 close(t);
end.