Исполнитель Ручка перемещается по координатной плоскости, оставляя след в виде линии. Ручка может выполнять команду сместиться на (a, b), где a и b — целые числа, которые перемещают «Ручка»из точки с координатами (x, y) в точку с координатами (x + a, y + b).
Цикл
ПОВТОРИ число РАЗ
последовательность команд
КОНЕЦ ПОВТОРИ
Означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным). Ручке был дан для исполнения следующий алгоритм:
НАЧАЛО
сместиться на (-47, -19)
ПОВТОРИТЬ N раз
сместиться на (31, 9)
сместиться на (a, b)
КОНЕЦ
сместиться на (82, -23)
КОНЕЦ
Определите минимальное натуральное значение N > 1, для которого найдутся такие значения чисел a и b, что после выполнения программы Ручка возвратится в исходную точку?
Решение руками
Составим 2 уравнения. Так как робот должен вернуться в исходную точку, то сумма всех его перемещений равна нулю:
по оси X
по оси Y
Теперь наша задача найти число на которое делится 42 и 35 нацело, так как числа a, b у нас целые. Такое число одно — это 7.
Решение программой
def find_min_n():
for n in range(2, 100):
if (-35 % n == 0) and (42 % n == 0):
a = (-35 // n) - 31
b = (42 // n) - 9
x = -47 + n * (31 + a) + 82
y = -19 + n * (9 + b) - 23
if x == 0 and y == 0:
return n
return None
print(find_min_n())