Задание №6 ЕГЭ Информатика с ответом и решением
Ответ: 175
Условие
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд n (где n — целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова, и Направо m (где m — целое число), вызывающая изменение направления движения на m градусов по часовой стрелке. Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм: Повтори 6 [Направо 36 Вперёд 10 Направо 36].
Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.
Подсказки — как подойти к решению
- Посчитай суммарный поворот за одну итерацию: в теле цикла два поворота, значит направление меняется на 72 градуса. Прикинь, сколько итераций нужно, чтобы черепаха описала фигуру и вернулась к начальному направлению.
- Нанеси узлы целочисленной сетки на рисунок или задай границы фигуры неравенствами и считай точки перебором. В этой формулировке точки, попавшие на линии, в ответ не входят.
Решение
Решим эту задачу, используя язык программирования Python.
import turtle as t # Подключим модуль черепашка
k = 20 # коэффициент для настраивания более удобного масштаба
t.left(90)
t.speed(10)
for i in range(10): # пропишем алгоритм построения фигуры по условию
t.right(36)
t.forward(10 * k)
t.right(36)
t.up()
t.speed(10) # Увеличим скорость черепашки
for x in range(16, -10, - 1): # Алгоритм построения точек
for y in range(10, -10, - 1):
t.goto(x * k, y * k)
t.dot(3) # точки размером 3 пикселя
t.done()
Теперь посчитаем количество точек внутри нарисованной фигуры, получаем 175.
Ответ: 175.
Приведем также алгоритм без модуля черепашки и подсчета точек вручную.
import math
counter = 0
for x in range(30):
for y in range(-15, 15):
if ((y < x*math.tan(3*math.pi/10)) and (y > -x*math.tan(3*math.pi/10)) \
and (y < -x*math.tan(math.pi/10) + 5 + math.tan(math.pi/10)*10*(math.cos(3*math.pi/10)+math.cos(math.pi/10))) \
and (y > x*math.tan(math.pi/10) - 5 - math.tan(math.pi/10)*10*(math.cos(3*math.pi/10)+math.cos(math.pi/10))) \
and (x < 10*(math.cos(3*math.pi/10)+math.cos(math.pi/10)))):
counter += 1
print(counter)
Ответ: 175.
Приведём решение Сергея Донец на языке PascalABC.NET.
uses turtle;
begin
down;
loop 6 do begin{Повтори 6
[Направо 36 Вперёд 10 Направо 36].}
TurnRight(36);Forw(10);TurnRight(36);
end;
end.
Ответ: 175
Типичные ошибки
- Похоже, ты прибавил точки, лежащие на линиях фигуры. В условии просят учитывать только точки внутри области, поэтому точки на нарисованном контуре надо исключить из подсчёта.
В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №6 по информатике