Cod sursa(job #769885)

Utilizator ctlin04UAIC.VlasCatalin ctlin04 Data 21 iulie 2012 11:31:25
Problema Dreptunghiuri Scor 0
Compilator fpc Status done
Runda Lista lui wefgef Marime 0.91 kb
Program dreptunghiuri;
 var rad:array [1..1 shl 20] of longint;
     i,j,n,m,sol:longint;
     fi,fo:text;
function rez(h,w:longint):longint;
 var sol,r1,r2,delta,k:longint;
begin
 sol:=1;
  for k:=1 to h do begin
   delta:=w*w-4*k*(h-k);
   if (delta=0) and (w mod 2=0) then sol:=sol+(w div 2)
   else if (delta>0) and (rad[delta]>0) then begin
            r1:=w-rad[delta]; r2:=w+rad[delta];
            if (r1>2) and (r1<2*w) and (r1 mod 2=0) then sol:=sol+(r1 div 2);
            if (r2>2) and (r2<2*w) and (r2 mod 2=0) then sol:=sol+(r2 div 2);
                                         end;
                   end;
 rez:=sol;
end;
begin
 assign(fi,'dreptunghiuri.in');
  assign(fo,'dreptunghiuri.out');
 reset(fi); rewrite(fo); readln(fi,n,m);
  for i:=1 to 1000 do rad[i*i]:=i;
  for i:=2 to n do
   for j:=2 to m do
    sol:=sol+(n-i+1)*(m-j+1)*rez(i-1,j-1);
  write(fo,sol);
 close(fo);
end.