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

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

Ответ: 268

Условие

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд n (где n — целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова, и Направо m (где m — целое число), вызывающая изменение направления движения на m градусов по часовой стрелке. Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм: Повтори 6 [Вперёд 10 Направо 60].

Определите количество точек с целочисленными координатами, лежащих внутри или на границе области, которую ограничивает заданная алгоритмом линия.

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

  1. Определи фигуру по командам: шесть одинаковых шагов с поворотом на 60 градусов дают замкнутый правильный многоугольник. Найди координаты его вершин и нанеси на чертёж узлы целочисленной сетки.
  2. Считай точки двойным перебором по целым координатам, проверяя их неравенствами сторон. В этой задаче точки на границе учитываются, а часть вершин фигуры имеет нецелые координаты — считай честно, а не по площади.

Решение

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

Черепаха рисует правильный шестиугольник со стороной 10.

Слева шестиугольник ограничен прямой x=0, справа - x=10 · sqrt(3) (приближенно 17.3), снизу - прямыми y=-x/sqrt(3) и y=x/sqrt(3)-10, а сверху - y=x/sqrt(3)+10 и y=-x/sqrt(3)+20.

Количество точек внутри шестиугольника можно найти с помощью следующей программы:

k=0

for x in range(18):

for y in range(-10,20):

if max(-x/3**0.5,x/3**0.5-10) <= y <= min(10+x/3**0.5,-x/3**0.5+20): k+=1

print(k)

Решим эту задачу, используя язык программирования Python.

c = 0

for x in range(0, 20):

for y in range(-5, 15):

if x >= 0 and x <= 10 * 3**0.5 and \

y >= -1/(3**0.5)*x and y >= 1/(3**0.5)*x-10 and \

y <= 1/(3**0.5)*x+10 and y <= -1/(3**0.5)*x+20:

c += 1

print(c)

Ответ: 268.

Приведём построение рисунка Виктории Зиберовой на языке Python.

from turtle import *

lt(90)

size=30

screensize(2000,2000)

tracer(0)

down()

for i in range(6):

fd(10*size)

rt(60)

up()

for x in range(-20,20):

for y in range(-20,20):

setpos(x*size,y*size)

dot(4,'red')

done()

Приведём программу Сергея Донец на PascalABC:

uses turtle;

begin

down;

loop 6 do

begin

Forw(10); TurnRight(60);

end;

end.

Ответ: 268

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

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

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