Var i,k,p,r,m,n: integer;
<span>begin
</span><span> write('размер клетки k = '); readln(k);
</span><span> write('радиус круга r = '); readln(r);
</span><span> n:=r div k;
</span><span> if ((r mod k)>0) then inc(n);
</span><span> m:=0; p:=n-1;
</span><span> for i:=1 to n-1 do
</span><span> begin
</span><span> if Ceil(sqrt(r*r-k*i*k*i))<=p*k then
</span><span> begin
</span><span> p:=p-1;
</span><span> m:=m+n-i;
</span><span> end;
</span><span> end;
</span><span> m:=4*n*n-4*m;
</span><span> writeln(m);
</span><span>end.
</span>размер клетки k = 1
<span>радиус круга r = 5
</span><span>88
</span>размер клетки k = 3
<span>радиус круга r = 7
</span><span>32
</span>размер клетки k = 4
<span>радиус круга r = 5
</span><span>12
</span>
(y >= x-4)and(y <= x+4)
(y >= x-4) && (y <= x+4)
Ответ: перебор всегда работает но возможно не рационален
int main()
{
SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
setlocale(LC_ALL, "Russian");
int mass[4][5];
int max = 0;
int count = 0;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
mass[i][j] = rand() % 5;
cout << mass[i][j] << " ";
}
cout << endl;
}
for (int i1 = 0; i1 < 3; i1++)
{
for (int j1 = 0; j1 < 4; j1++)
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
if (mass[i1][j1] == mass[i][j])
{
count++;
}
}
if ((count > 1) && (mass[i1][j1] >= max))
{
max = mass[i1][j1];
}
count = 0;
}
}
}
cout << endl << max;