Cod sursa(job #109917)

Utilizator silvia_the_bestSilvia Pripoae silvia_the_best Data 25 noiembrie 2007 12:56:17
Problema Multimi2 Scor 0
Compilator fpc Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 2.08 kb
var     a,b,c,x1,x2,d,d1,d2,k,ndiv,q1,q2:longint;
        f,g:text;
begin
        assign(f,'ecuatie.in');
        assign(g,'ecuatie.out');
        reset(f);
        rewrite(g);

        readln(f,a,b,c,k);
        x1:=(-b+round(sqrt(b*b-4*a*c)))div (2*a);
        x2:=(-b-round(sqrt(b*b-4*a*c)))div (2*a);
        d:=1;
        while d<=a do begin
                if a mod d=0 then begin
                        d1:=0-d;
                        d2:=a div d1;
                        q1:=d2*x1;
                        q2:=d2*x2;
                        if k=ndiv+1 then begin
                                if q1<q2 then writeln(g,'(',d2,'x-',x1*d2,') (',d1,'x-',x2*d1,')')
                                else if q1>q2 then writeln(g,'(',d2,'x-',x2*d2,') (',d1,'x-',x1*d1,')')
                        end;
                        if k=ndiv+2 then begin
                           if q2<q1 then writeln(g,'(',d2,'x-',x1*d2,') (',d1,'x-',x2*d1,')')
                           else if q2>q1 then writeln(g,'(',d2,'x-',x2*d2,') (',d1,'x-',x1*d1,')')
                        end;
                        ndiv:=ndiv+2;
                end;
                d:=d+1;
        end;
        d:=1;
        while d<=a do begin
                if a mod d=0 then begin
                        d1:=d;
                        d2:=a div d1;
                        q1:=d1*x1;
                        q2:=d1*x2;
                        if k=ndiv+1 then begin
                                if q1<=q2 then writeln(g,'(',d1,'x-',x1*d1,') (',d2,'x-',x2*d2,')')
                                else if q1>q2 then writeln(g,'(',d1,'x-',x2*d1,') (',d2,'x-',x1*d2,')')
                        end;
                        if k=ndiv+2 then begin
                           if q2<q1 then writeln(g,'(',d1,'x-',x1*d1,') (',d2,'x-',x2*d2,')')
                           else if q2>q1 then writeln(g,'(',d1,'x-',x2*d1,') (',d2,'x-',x1*d2,')')
                        end;
                        ndiv:=ndiv+2;
                end;
                d:=d+1;
        end;


        close(f);
        close(g);
end.