Cod sursa(job #25079)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 4 martie 2007 10:28:51
Problema Puteri Scor 40
Compilator fpc Status done
Runda preONI 2007, Runda 3, Clasa a 9-a si gimnaziu Marime 2.01 kb
function cmmdc(x,y:longint):longint;
var k,r:longint;
begin
        k:=0;
        while ((x and 1)=0)and((y and 1)=0) do
        begin
                x:=x div 2;
                y:=y div 2;
                inc(k);
        end;
        while y<>0 do
        begin
                r:=x mod y;
                x:=y;
                y:=r;
        end;
        cmmdc:=x shl k;
end;
var f:text;
        n,i,j,p,o,ra,rad:longint;
        a:array[1..100000,1..3] of byte;
        nr:int64;
begin
     assign(f,'puteri.in');
     reset(f);
                read(f,n);
                for i:=1 to n do
                read(f,a[i,1],a[i,2],a[i,3]);
     close(f);
     for i:=1 to n-1 do
     for j:=i+1 to n do
     begin
          o:=a[i,1]+a[j,1];
          p:=a[i,2]+a[j,2];
          ra:=a[i,3]+a[j,3];
          if o=0 then
          begin
                if (p=0)and(ra>1) then
                                nr:=nr+1
                else
                if (ra=0)and(p>1) then
                                nr:=nr+1
                else
                if (p>1)and(ra>1) then
                if cmmdc(p,ra)<>1 then
                   nr:=nr+1;
          end
          else
          if p=0 then
          begin
                if (ra=0)and(o>1) then
                        nr:=nr+1
                else
                if (ra>1)and(o>1) then
                        if cmmdc(ra,o)<>1 then
                        nr:=nr+1;
          end
          else
          if ra=0 then
          begin
                if (o>1)and(p>1) then
                if cmmdc(o,p)<>1 then
                        nr:=nr+1;
          end
          else
          begin
                if (o>1)and(p>1)and(ra>1) then
                begin
                        rad:=cmmdc(o,p);
                        if cmmdc(rad,ra)<>1 then
                                nr:=nr+1
                end;
          end;
     end;
     assign(f,'puteri.out');
     rewrite(f);
        write(f,nr);
     close(f);
end.