Cod sursa(job #31731)

Utilizator vasilevvasile vasile vasilev Data 16 martie 2007 14:23:22
Problema Puteri Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.38 kb
program puteri;
 var a,b,c,a1,b1,c1,d,min,med,max:byte;
     p,n,i,j,k:longint;
     gasit:boolean;
     f,g:text;

 function divizor(a,b,c:byte):byte;
  begin
   if (a=0) and (b=0) or (a=0) and (c=0) or (c=0) and (b=0) then
    divizor:=a+b+c
   else
    if (a=1) or (b=1) or (c=1) then
     divizor:=1
    else
     begin
      if a<b then
       begin
        max:=b;
        min:=a
       end
      else
       begin
        max:=a;
        min:=b
       end;
      if max<c then
       max:=c;
      if min>c then
       min:=c;
      med:=a+b+c-min-max;
      if min=0 then
       min:=med;
      gasit:=false;
      d:=2;
      while (d<=min) and not gasit do
       if (a mod d = 0) and (b mod d = 0) and (c mod d = 0) then
        gasit:=true
       else
        inc(d);
      if gasit then
       divizor:=d
      else
       divizor:=1
     end;
   end;

 begin
  assign(f,'puteri.in');
  reset(f);
  assign(g,'puteri.out');
  rewrite(g);
  readln(f,n);
  p:=0;
  for i:=1 to n-1 do
   begin
    reset(f);
    for k:=1 to i do
     readln(f);
    readln(f,a,b,c);
    for j:=i+1 to n do
     begin
      readln(f,a1,b1,c1);
      a:=a+a1;
      b:=b+b1;
      c:=c+c1;
      d:=divizor(a,b,c);
      a:=a-a1;
      b:=b-b1;
      c:=c-c1;
      if d>1 then
       inc(p)
     end;
   end;
 close(f);
 writeln(g,p);
 close(g);
end.