среда, 7 августа 2013 г.

8. Спички

Какое минимальное количество спичек необходимо для того, чтобы выложить на плоскости Nквадратов со стороной в одну спичку? Спички нельзя ломать и класть друг на друга. Вершинами квадратов должны быть точки, где сходятся концы спичек, а сторонами – сами спички.
   Напишите программу, которая по количеству квадратов N, которые необходимо составить, находит минимальное необходимое для этого количество спичек.

Код решения:
*****
var
l,v,k,r,n,i:longint;
begin
read(n);
i:=trunc(sqrt(n));
k:=i*i;
r:=4+6*(i-1)+2*sqr(i-1);
if k<n then
begin
   for l:=1 to i do
   begin
        if l=1 then v:=3 else v:=2;
        r:=r+v;k:=k+1;
        if k=n then begin i:=-1; break; end;

   end;
   for l:=1 to i+1 do
   begin
        if l=1 then v:=3 else v:=2;
        r:=r+v;k:=k+1;
        if k=n then break;

   end;
end;
writeln(r);
end.
*****

Комментариев нет:

Отправить комментарий