Исполнитель Черепашка перемещается на экране компьютера, оставляя след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существуют две команды:
Болерод (п) (где и целое число), вызывающая передвижение Черепашни на пше в направления движения.
Направо(т) (где целое число), вызывающая изменение направления даюмения на градусов по часовой стрелке.
Запись Повтори А (Команда1 Команда 2 Команда 3) означает, что последовательность команд
в скобках повторится к раз
Черепашке был дан для исполнения следующий алгоритм:
Повтори 7 (Вперед (7) Вправо(90))
Постройте многоугольник в среде исполнителя «Черепахая программы «Кумира и посчитайте количести точек с целыми координатами, которые находятся внутри фигуры (точки на границе считать не нужно).
Давайте по шагам разберем задачу и решим ее:
**Задача:**
Черепашка перемещается по плоскости с помощью команд, формирующих многоугольник. Нам нужно построить этот многоугольник по указанному алгоритму и посчитать количество точек с целыми координатами, находящихся внутри него (не по границе).
**Исходные данные:**
- Повторить 7 раз:
- Вперед (7)
- Вправо(90)
**Шаги решения:**
### 1. Построение многоугольника
Расмотрим движение черепашки пошагово.
- Начинаем в точке (0,0), направлены по оси X (по умолчанию).
**Изначально:**
- Текущие координаты: (x, y) = (0, 0)
- Текущий вектор направления: вправо (по оси X)
**Каждый цикл из 2 команд:**
- "Вперед (7)": перемещение на 7 по текущему направлению
- "Вправо(90)": изменение направления вращением по часовой стрелке на 90°.
Это повторится 7 раз.
### 2. Пошаговый расчет координат и направления
**Изначально:**
- Вектор направления: (dx, dy) = (1, 0) (вправо)
**Цикл 1:**
- Вперед(7):
- Новая позиция: (0 + 7*1, 0 + 7*0) = (7, 0)
- Вправо(90):
- Поворот вектора направления: (1,0) повернуть по часовой на 90° → (0, -1)
**Цикл 2:**
- Вперед(7):
- Новая позиция: (7 + 7*0, 0 + 7*(-1)) = (7, -7)
- Вправо(90):
- Вектор: (0, -1) повернуть на 90° по часовой: (1, 0) (следовательно, направление в сторону вправо)
**Цикл 3:**
- Вперед(7):
- (7 + 7*1, -7 + 7*0) = (14, -7)
- Вправо(90):
- (1, 0) повернутый на 90° по часовой: (0, 1)
**Цикл 4:**
- Вперед(7):
- (14 + 7*0, -7 + 7*1) = (14, 0)
- Вправо(90):
- (0, 1) повернутый на 90°: (-1, 0)
**Цикл 5:**
- Вперед(7):
- (14 + 7*(-1), 0 + 7*0) = (7, 0)
- Вправо(90):
- (-1, 0) повернутый на 90°: (0, -1)
**Цикл 6:**
- Вперед(7):
- (7 + 7*0, 0 + 7*(-1)) = (7, -7)
- Вправо(90):
- (0, -1) повернутый на 90°: (1, 0)
**Цикл 7:**
- Вперед(7):
- (7 + 7*1, -7 + 7*0) = (14, -7)
- Вправо(90):
- (1, 0) повернутый на 90°: (0, 1)
Итак, финальная точка после восьми команд:
- Последняя позиция: (14, -7)
---
### 3. Построение многоугольника через вершины
Вероятнее всего, вершинами многоугольника будут **последовательные точки** на пути черепашки:
Вершины:
1. (0,0) — старт
2. (7,0)
3. (7, -7)
4. (14, -7)
5. (14, 0)
6. (7, 0) (закрываем) — но это уже внутри, нужно проверить.
Обратите внимание, что путь возвращается к точке (7,0), которая раньше была достигнута. Чтобы понять, какой многоугольник получили, лучше нарисовать линиями последовательные вершины:
- (0, 0) → (7, 0) → (7, -7) → (14, -7) → (14, 0) → (7, 0).
Это, фактически, фигура, которая состоит из 4 сторон:
Линии:
- (0,0) → (7,0)
- (7,0) → (7,-7)
- (7,-7) → (14,-7)
- (14,-7) → (14,0)
- (14,0) → (7,0) — линия возвращается и получается "ломанная" фигура
Но кажется, что многоугольник – это замкнутая фигура, можно соединить все вершины.
### 4. Построение многоугольника (простой многоугольник)
Обратив внимание:
- Вершины: (0,0), (7,0), (7,-7), (14,-7), (14,0)
- И возвращается к (7,0) — внутри многоугольника
Это многоугольник с вершинами:
\[
(0,0),~ (7,0),~ (7,-7),~ (14,-7),~ (14,0)
\]
### 5. Решение задачи (подсчет точек с целыми координатами внутри многоугольника)
Теперь у нас есть многоугольник — многоугольник с вершинами в координатах:
- (0, 0),
- (7, 0),
- (7, -7),
- (14, -7),
- (14, 0).
Это четырёхугольник с одной "горизонтальной" вершиной и двумя вертикальными сторонами.
Используем формулу **площадь многоугольника по координатам (формула Гаусса)**:
\[
S = \frac{1}{2} \left| \sum_{i=1}^{n} (x_i y_{i+1} - y_i x_{i+1}) \right|
\]
где вершина (x_{n+1}, y_{n+1}) — это первая вершина, чтобы закрыть многоугольник.
Вершины по порядку:
1. (0, 0)
2. (7, 0)
3. (7, -7)
4. (14, -7)
5. (14, 0)
Переходим к подсчету:
\[
\begin{aligned}
\text{Сумма} &= x_1 y_2 - y_1 x_2 + x_2 y_3 - y_2 x_3 + x_3 y_4 - y_3 x_4 + x_4 y_5 - y_4 x_5 + x_5 y_1 - y_5 x_1 \\
&= (0)(0) - (0)(7) + (7)(-7) - (0)(7) + (7)(-7) - (-7)(14) + (14)(0) - (-7)(14) + (14)(0) - (0)(0) \\
\end{aligned}
\]
Подробно:
- (0)(0) - (0)(7) = 0 - 0 = 0
- (7)(-7) - (0)(7) = -49 - 0 = -49
- (7)(-7) - (-7)(14) = -49 - (-98) = -49 + 98 = 49
- (14)(0) - (-7)(14) = 0 - (-98) = 98
- (14)(0) - (0)(0) = 0 - 0 = 0
Сумма:
0 - 49 + 49 + 98 + 0 = 98
Площадь:
\[
S = \frac{1}{2} \times |98| = 49
\]
### 6. Количество точек внутри многоугольника (по формуле Пуассона)
Формула для числа внутренних целых точек:
\[
I = S - \frac{B}{2} + 1
\]
где:
- \(S\) — площадь многоугольника (в делениях)
- \(B\) — количество точек на границе многоугольника
Но обычно:
\[
\text{Количество внутренних точек} = \text{Area} - \frac{\text{Number of boundary points}}{2} + 1
\]
Для целых многоугольника, если плоскость делена на клетчатую сетку, можно использовать **формулу Pick'a**:
\[
A = \text{Площадь}
\]
и количество точек на границе может быть посчитано по вершинам и сторонам.
Общая идея:
- Расчет на основе теоремы Пика — число внутренних точек равно площади минус половина количества точек на границе, плюс 1.
---
### 7. Подсчет точек на границе (\(B\))
Обстоит дело о каждом ребре:
Количество точек на ребре (включая вершины) равно:
\[
\gcd(|x_2 - x_1|, |y_2 - y_1|)
\]
и суммировать по всем сторонам.
Перебираем стороны:
1. (0, 0) — (7, 0):
\(|7 - 0|=7\), \(|0 - 0|=0\) → \(\gcd(7, 0)=7\)
2. (7, 0) — (7, -7):
\(|7 - 7|=0\), \(|-7 - 0|=7\) → \(\gcd(0,7)=7\)
3. (7, -7) — (14, -7):
\(|14 - 7|=7\), \(|-7 -(-7)|=0\) → \(\gcd(7, 0)=7\)
4. (14, -7) — (14, 0):
\(|14 - 14|=0\), \(|0 - (-7)|=7\) → \(\gcd(0,7)=7\)
5. (14, 0) — (0, 0):
\(|0 -14|=14\), \(|0 - 0|=0\) → \(\gcd(14, 0)=14\)
Общее число точек на границе:
\[
B = 7 + 7 + 7 + 7 + 14 = 42
\]
### 8. Подсчет внутренних точек \(I\):
Используя формулу:
\[
I = S - \frac{B}{2} + 1
\]
и учитывая, что площадь \(S=49\):
\[
I = 49 - \frac{42}{2} + 1 = 49 - 21 + 1 = 29
\]
---
### **Ответ:**
**Количество целых точек, находящихся внутри многоугольника: \(\boxed{29}\).**
Если есть дополнительные вопросы или нужно проверка, пожалуйста, скажите!