πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №6 → Задание i06-13

Задание №6 ЕГЭ Информатика с ответом и решением

Ответ: 15

Условие

Исполнитель Черепаха передвигается по плоскости и оставляет след в виде линии. Черепаха может выполнять три команды: Вперёд n (n — число), Направо m (m — число) и Налево m (m — число). По команде Вперёд n Черепаха перемещается вперёд на n единиц. По команде Направо m Черепаха поворачивается на месте на m градусов по часовой стрелке, при этом соответственно меняется направление дальнейшего движения. По команде Налево m Черепаха поворачивается на месте на m градусов против часовой стрелки, при этом соответственно меняется направление дальнейшего движения.

В начальный момент Черепаха находится в начале координат и направлена вверх (вдоль положительного направления оси ординат).

Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что заданная последовательность из S команд повторится k раз.

Черепаха выполнила следующую программу (x в тексте программы — некоторое натуральное число):

Повтори 4 [Вперёд x Направо 90 Вперёд x Налево 90 Вперёд x Направо 90].

Определите, при каком наименьшем натуральном x количество точек с целочисленными координатами внутри области, ограниченной линией, полученной при выполнении данной программы, окажется больше 1000. Точки, расположенные на линии, не учитывать.

Подсказки — как подойти к решению

  1. Речь о знакомой фигуре из повторяющихся шагов с поворотами: она представляет собой крест из одинаковых квадратов. Выведи формулу числа внутренних точек через сторону квадрата и составь неравенство по условию.
  2. Проверь формулу на маленьких значениях стороны, чтобы убедиться, что перекрытия учтены верно, а затем подставляй значения по возрастанию, пока результат не станет больше порога из задания.

Решение

Нарисуем при помощи Python искомую картинку для некоторых значений x и попробуем вывести формулу для нахождения искомого количества точек:

import turtle as t

t.left(90)

t.speed(1000)

k = 10

x = 2

t.down()

for i in range(4):

t.forward(x * k)

t.right(90)

t.forward(x * k)

t.left(90)

t.forward(x * k)

t.right(90)

t.up()

for i in range(0, 3 * x + 1):

for y in range(-x, 2 * x + 1):

t.goto(i * k, y * k)

t.dot()

Для x = 2 искомых точек 9, а всего точек 49. Для x = 3 искомых точек 28, а всего 100. Можно вывести формулу. Количество искомых точек будет равно разности количества всех точек и точек на линии, то есть:

левая круглая скобка 3x плюс 1 правая круглая скобка в квадрате минус 4 умножить на левая круглая скобка x плюс 1 правая круглая скобка в квадрате минус 4 левая круглая скобка x минус 1 правая круглая скобка .

При помощи python найдем минимальное значение, при котором выведенная формула даёт число, превосходящее 1000:

for x in range(1, 100):

if (3 * x + 1) ** 2 - ((x + 1) ** 2) * 4 - 4 * (x - 1) >= 1000:

print(x)

break

Программа должна вывести число 15.

Ответ: 15.

Приведём аналитическое решение Юрия Красильникова.

Черепаха по заданной программе нарисует крест из пяти квадратов со стороной x.

Число точек внутри этого креста можно подсчитать по формуле 5(x-1)2+4(x-1) или 5x2-6x+1. (Чтобы убедиться в справедливости этой формулы, достаточно нарисовать крест для x=3 и точки внутри него.)

Задача сводится к решению квадратного неравенства 5x2-6x+1 > 1000 или 5x2-6x-999 > 0.

Корни трехчлена 5x2-6x-999 найдем с помощью программы

a,b,c = 5,-6,-999

d = b**2-4*a*c

x1 = (-b-d**0.5)/(2*a)

x2 = (-b+d**0.5)/(2*a)

print(x1,x2)

Корни равны (округленно) -13.55 и 14.75.

Минимальное натуральное число, удовлетворяющее приведенному выше неравенству - это 15.

Приведём решение Сергея Донец на языке PascalABC.NET.

4x(x-1) + (x-1) · (x-1)

выносим (x-1) за скобку получаем (x-1) · (5x-1)

x=2 (2-1) · (5 · 2-1)=9

x=3 (3-1) · (5 · 3-1)=28

x=14 (14-1) · (5 · 14-1)=897

x=15 (15-1) · (5 · 15-1)=1036

uses turtle;

begin

{расчёт по формуле. когда d больше 1000 вывести х}

for var x:=1 to 1000 do

begin

var d:= (x-1)*(5*x-1);

if d>1000

then begin

Print(x);//15

down;

{крест толщина и высота палки от центра до края = х}

loop 4 do

begin

Forw(x); TurnRight(90);

Forw(x); TurnLeft(90);

Forw(x); TurnRight(90);

end;

exit;

end;

end;

end.

Ответ: 15

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №6 по информатике