Cod sursa(job #209626)

Utilizator mlazariLazari Mihai mlazari Data 23 septembrie 2008 18:16:51
Problema Dreptunghiuri Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.19 kb
Program Dreptunghiuri;
var rez : int64;
    m,n : integer;

procedure Citeste;
var Intrare : text;
begin
  assign(Intrare,'dreptunghiuri.in');
  reset(Intrare);
  readln(Intrare,m,n);
  close(Intrare);
end;

procedure Simplifica(a,b : integer; var va,vb : integer);
var min,i : integer;
begin
  if b=0 then
   begin
     va:=1;
     vb:=0;
   end
   else
    begin
      va:=a;
      vb:=b;
      if a<b then min:=a else min:=b;
      for i:=min downto 2 do
       if (va mod i=0) and (vb mod i=0) then
        repeat
          va:=va div i;
          vb:=vb div i;
        until (va mod i<>0) or (vb mod i<>0);
    end;
end;

procedure Calculeaza;
var dx,dy,qx,qy,rx,ry: integer;
begin
  rez:=0;
  for dx:=1 to m do
   for dy:=0 to n do
    begin
      Simplifica(dx,dy,qx,qy);
      rx:=qx;
      ry:=qy;
      while (dy+rx<=n) and (dx+ry<=m) do
       begin
         rez:=rez+(n-dy-rx)*(m-dx-ry);
         rx:=rx+qx;
         ry:=ry+qy;
       end;
    end;
end;

procedure Scrie;
var Iesire : text;
begin
  assign(Iesire,'dreptunghiuri.out');
  rewrite(Iesire);
  write(Iesire,rez);
  close(Iesire);
end;

begin
  Citeste;
  Calculeaza;
  Scrie;
end.