Тема 12. Алгоритмы – анализ сложных алгоритмов

12.05 Исполнитель «Чертежник»

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгоритмы – анализ сложных алгоритмов
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 41#26064Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a,b)  (где a  , b  — целые числа), перемещающую Чертёжника из точки с координатами (x,y)  в точку с координатами (x + a,y + b)  . Чертёжнику был дан для исполнения следующий алгоритм:

Начало

Сместиться на (30,30)

Повтори N  раз

   Сместиться на (a,b)

   Сместиться на (15,− 9)

Конец повтори

Сместиться на (2,− 10)

Конец

Укажите наибольшее возможное значение числа N  , для которого найдутся такие значения чисел a  и b  , что после выполнения программы Чертёжник возвратится в исходную точку.

Показать ответ и решение

Решение руками

Запишем систему:

(
{30 + N * (a + 15) + 2 = 0
(30 + N * (b + (-9)) + (- 10) = 0

Перенесем выражения с N в одну сторону, а числа в другую: 

(
{ N * (a + 15) = -32

( N * (b -9) = -20

Найдем НОД (наибольший общий делитель) чисел 32  и 20  .
Получим ответ: 4

Решение программой

max_n = 0
for n in range(1, 33):
    if (-32 % n == 0) and (-20 % n == 0):
        a = (-32 // n) - 15
        b = (-20 // n) + 9
        x = 30 + n * (a + 15) + 2
        y = 30 + n * (b - 9) - 10
        if x == 0 and y == 0:
            max_n = n
print(max_n)

Ответ: 4

Ошибка.
Попробуйте повторить позже

Задача 42#26091Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a, b) (где a, b – целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x + a, y + b). Чертёжнику был дан для исполнения следующий алгоритм:

Начало

Сместиться на (90, -40)

Повтори N раз

   Сместиться на (a, b)

   Сместиться на (18, 14)

Конец повтори

Сместиться на (-9, -2)

Сместиться на (-6, -3)

Конец

Укажите наибольшее возможное значение числа N, для которого найдутся такие значения чисел a и b, что после выполнения программы Чертёжник возвратится в исходную точку.

Показать ответ и решение

Решение руками

Запишем систему:

(
{90 + N(a + 18)-9 -6 = 0
(-40 + N(b + 14) -2 -3 = 0

Перенесем выражения с N в одну сторону, а числа в другую: 

(
{ N(a + 18) = -75

( N(b + 14) = 45

Найдем НОД (наибольший общий делитель) чисел 75  и 45  .
Получим ответ: 15

Решение программой

max_n = 0
for n in range(1, 16):
    if (-75 % n == 0) and (45 % n == 0):
        a = (-75 // n) - 18
        b = (45 // n) - 14
        x = 90 + n * (a + 18) - 9 - 6
        y = -40 + n * (b + 14) - 2 - 3
        if x == 0 and y == 0:
            max_n = n
print(max_n)

Ответ: 15

Ошибка.
Попробуйте повторить позже

Задача 43#26145Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (c, d) (где c, d – целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x + c, y + d).
Цикл

Повтори число раз

   Последовательность команд

Конец повтори
означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным).
Чертёжнику был дан для исполнения следующий алгоритм:

Начало

Сместиться на (-15, -144)

Повтори N раз

   Сместиться на (c, 300)

   Сместиться на (200, d)

Конец повтори

Сместиться на (-25, 72)

Конец

Укажите максимальное значение числа N>1, для которого найдутся такие значения чисел c и d, что после выполнения программы Чертежник возвратится в исходную точку.

Показать ответ и решение

Решение руками

Преобразуем все передвижения в систему:

(
{ − 15 +n ∗c + 200 ∗n − 25 = 0
(
  − 144+ 300 ∗n + n∗d + 72 = 0

(
{n ∗(200+ c) = 40

(n ∗(300+ d) = 72

НОД(40; 72) = 8 - ответ.

Решение программой

def find_max_n():
    max_n = 0
    for n in range(2, 41):
        if (40 % n == 0) and (72 % n == 0):
            c = (40 // n) - 200
            d = (72 // n) - 300
            x = -15 + n * (c + 200) - 25
            y = -144 + n * (300 + d) + 72
            if x == 0 and y == 0:
                max_n = n
    return max_n

print(find_max_n())

Ответ: 8

Ошибка.
Попробуйте повторить позже

Задача 44#26679Максимум баллов за задание: 1

Исполнитель M  перемещается по координатной плоскости, оставляя след в виде линии. M  может выполнять команду сместиться на (a,b)  , где a  и b  — целые числа, которые перемещают M  из точки с координатами (x,y)  в точку с координатами (x +a,y + b)  .

Цикл

  ПОВТОРИ число РАЗ

    последовательность команд

  КОНЕЦ ПОВТОРИ

Означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным).

Исполнителю M  был дан для исполнения следующий алгоритм:

НАЧАЛО

  сместиться на (− 47,− 19)

  ПОВТОРИТЬ N  раз

    cместиться на (31,9)

    cместиться на (a,b)

  КОНЕЦ

  сместиться на (82,− 23)

КОНЕЦ

Определите минимальное натуральное значение N > 1  , для которого найдутся такие значения чисел a  и b  , что после выполнения программы M  возвратится в исходную точку.

Показать ответ и решение

Решение руками

Запишем систему для координат x  и y  , учитывая, что исполнитель вернулся в исходную точку:

(
{ -47 + N (31 + a) + 82 = 0
( -19 + N (9 + b) -23 = 0

Перенесем выражения с N в одну сторону, а числа в другую: 

(
{ N (31 + a) = -35

( N (9 + b) = 42

Найдем НОД (наибольший общий делитель) чисел 35  и 42  .
Получим ответ: 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())

Ответ: 7

Ошибка.
Попробуйте повторить позже

Задача 45#26947Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду сместиться на (a,b)  (где a,b  — целые числа), перемещающую Чертёжника из точки с координатами (x,y)  в точку с координатами (x+ a,y + b)  . Если числа a,b  положительные, значение соответствующей координаты увеличивается, если отрицательные — уменьшается. Изначально чертежник стоит в начале системы координат т.е. в точке (0,0)  .

Например, если Чертёжник находится в точке с координатами (5,7)  , то команда сместиться на (5,− 6)  переместит Чертёжника в точку (10,1)  .

Запись

П ОВТ ОР И k Р АЗ

   К оманда1

   К оманда2

   К оманда3

К ОНЕ Ц ПО ВТ ОРИ

означает, что последовательность команд К оманда1 К оманда2 Команда3  повторится k  раз.

Чертёжнику был дан для исполнения следующий алгоритм:

Н АЧА ЛО

   сместиться на (5,45)

   П ОВТ ОР И k Р АЗ

      см еститься на (a,− 5)

   К ОН ЕЦ ПО ВТ ОРИ

К ОНЕ Ц

Чему равны значения переменных a  и k  , если известно, что Чертёжник остановился в точке (− 11,25)  ? В ответе укажите два числа — сначала значение переменной a  , затем переменной k  , без пробелов и знаков препинания.

Показать ответ и решение

Решение №1:

for k in range(100):
    for a in range(-300, 300):
        if (5 + k * a) == -11 and (45 + k * (-5)) == 25:
            print(str(a) + str(k))

Решение №2:

Давайте посчитаем на сколько по x  и y  сдвинется Чертёжник: по x  мы сдвинемся на 5 + k∗ a  , а по y  на 45 +k ∗(− 5)  . Знаем, что Чертёжник остановился в точке (-11, 25). А значит получаем два уравнения: 5+ k ∗a = − 11  и 45 − 5k = 25  . Из второго уравнения получаем, что k = 4  , и, подставив полученное k  во второе уравнение, узнаём, что a = − 4  . Пишем в ответ − 44  .

Ответ: -44

Ошибка.
Попробуйте повторить позже

Задача 46#53432Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a, b) (где a, b – целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x + a, y + b). Чертёжнику был дан для исполнения следующий алгоритм:

Сместиться на (16, -21)

Повтори N раз

Сместиться на (a, b)

Сместиться на (-1, -2)

конец

Сместиться на (-60, -12)

После выполнения этого алгоритма Чертёжник возвращается в исходную точку. Какое наибольшее число повторений могло быть указано в конструкции «Повтори . . . раз»?

Показать ответ и решение

Запишем два уравнения и составим из них систему. Система будет иметь такой вид:

(
{16 +n (a − 1)− 60 = 0
(− 21+ n(b− 2)− 12 = 0

Перенесём известную часть на правую сторону. Тогда получим:

(
{ n(a− 1) = 44

( n(b− 2) = 33

Поделим данные уравнения на n. Получим:

(        44
{ a− 1 = n-
( b− 2 = 33
         n

НОД для 44 и 33 равен 11. Ответ:11

Решение питоном:

 for n in range(100):
     for a in range(-100, 100):
         for b in range(-100, 100):
             x = y = 0
             x += 16
             y -= 21
             for i in range(n):
                 x += a
                 y += b
                 x -= 1
                 y -= 2
             x -= 60
             y -= 12
             if x == 0 and y == 0:
                 print(n)

 

Ответ: 11

Ошибка.
Попробуйте повторить позже

Задача 47#57096Максимум баллов за задание: 1

Исполнитель Чертежник перемещается на координатной плоскости, оставляя след в виде линии. Чертежник может выполнять команду Сместится на (a, b) (где a, b – целые числа), перемещающие Чертежника из точки с координатами (x, y) в точку с координатами (x + a, y + b). Если числа a, b положительные, значение соответствующей координаты увеличивается, если отрицательные — уменьшается. Например, если Чертёжник находится в точке с координатами (2, 3), то команда Сместиться на (-5,2) переместит Чертёжника в точку (-3, 5).

Цикл
    ПОВТОРИ число РАЗ последовательность команд
КОНЕЦ ПОВТОРИ

означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным).

Чертёжнику был дан для исполнения следующий алгоритм (количество повторений и величины смещения в первой из повторяемых команд неизвестны):

НАЧАЛО
    Сместиться на (-11,32)
    ПОВТОРИ ... РАЗ
        Сместиться на (15,-12)
        Сместиться на (... , ...)
    КОНЕЦ ПОВТОРИ
    Сместиться на (-19,38)
КОНЕЦ

В результате выполнения этого алгоритма Чертёжник возвращается в исходную точку. Какое наибольшее число повторений могло быть указано в конструкции «ПОВТОРИ ... РАЗ»?.

Показать ответ и решение

Решение руками

Запишем два уравнения и составим из них систему. Система будет иметь такой вид:

(
{ − 11+ n (15 + a)− 19 = 0
(
  32+ n(− 12 + b)+ 38 = 0

Перенесём известную часть на правую сторону. Тогда получим:

({
  n(15+ a) = 30
( n(− 12+ b) = − 70

Поделим данные уравнения на n. Получим:

({        30
 15 +a = -n
(− 12+ b = −70-
           n

НОД для 30 и 70 равен 10. Ответ:10

Решение программой

def find_max_n():
    max_n = 0
    for n in range(1, 31):
        if (30 % n == 0) and (-70 % n == 0):
            a = (30 // n) - 15
            b = (-70 // n) + 12
            x = -11 + n * (15 + a) - 19
            y = 32 + n * (-12 + b) + 38
            if x == 0 and y == 0:
                max_n = n
    return max_n

print(find_max_n())

Ответ: 10

Ошибка.
Попробуйте повторить позже

Задача 48#57098Максимум баллов за задание: 1

Исполнитель Чертежник перемещается на координатной плоскости, оставляя след в виде линии. Чертежник может выполнять команду Сместится на (a, b) (где a, b – целые числа), перемещающие Чертежника из точки с координатами (x, y) в точку с координатами (x + a, y + b). Если числа a, b положительные, значение соответствующей координаты увеличивается, если отрицательные — уменьшается.

Например, если Чертёжник находится в точке с координатами (2, 3), то команда Сместиться на (-5,2) переместит Чертёжника в точку (-3, 5).

Цикл

ПОВТОРИ число РАЗ

последовательность команд

КОНЕЦ ПОВТОРИ

означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным).

Чертёжнику был дан для исполнения следующий алгоритм (буквами n, a, b обозначены неизвестные числа, при этом n > 1):

НАЧАЛО

ПОВТОРИ n РАЗ

Сместиться на (-24, -7)

Сместиться на (a, b)

Сместиться на (15, 23)

КОНЕЦ ПОВТОРИ

Сместиться на (9, 16)

КОНЕЦ

Укажите наименьшее возможное значение числа n, для которого найдутся такие значения чисел a и b, что Чертёжник, начав выполнение программы из точки с координатами (-18,14), после выполнения алгоритма окажется в точке (12, 15).

Показать ответ и решение

Аналитическое решение:

Запишем два уравнения и составим из них систему. Система будет выглядеть так:

(
{ n(− 24+ a + 15)+ 9 = 12
(
  n(− 7+ b +23) +16 = 15

Перенесём известную часть в одну сторону,а неизвестную в другую. Тогда получим:

({
  n(− 24+ a + 15) = 3
( n(− 7+ b +23) = − 1

Как можем заметить,в скобках можно упростить выражение. Система примет такой вид:

({
  n(− 9 + a) = 3
( n(16+ b) = − 1

Можно заметить,что если n = 1,то можно подобрать такие a и b,чтобы выполнялось уравнение. Тогда a будет равняться 12,а b равняться -17. Ответ:1

 

Программное решение:

ans = 0
for n in range(1, 200):
    flag = 0
    for a in range(-500, 500):
        for b in range(-500, 500):
            if (-18 + n * (-24 + a + 15) + 9 == 12) and (14 + n * (-7 + b + 23) + 16 == 15):
                ans = n
                flag = 1
                break
        if flag == 1:
            break
    if flag == 1:
        break
print(ans)

Ответ: 1

Ошибка.
Попробуйте повторить позже

Задача 49#62827Максимум баллов за задание: 1

Исполнитель Ручка перемещается по координатной плоскости, оставляя след в виде линии. Ручка может выполнять команду сместиться на (a, b), где a и b - целые числа, которые перемещают "Ручка"из точки с координатами (x, y) в точку с координатами (x + a, y + b).

Цикл

   ПОВТОРИ число РАЗ

      последовательность команд

   КОНЕЦ ПОВТОРИ

Означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным). Ручке был дан для исполнения следующий алгоритм:

НАЧАЛО

   сместиться на (-47, -19)

   ПОВТОРИТЬ N раз

      сместиться на (31, 9)

      сместиться на (a, b)

   КОНЕЦ

   сместиться на (82, -23)

КОНЕЦ

Определите минимальное натуральное значение N > 1, для которого найдутся такие значения чисел a и b, что после выполнения программы Ручка возвратится в исходную точку?

Показать ответ и решение

Решение руками

Составим 2 уравнения. Так как робот должен вернуться в исходную точку, то сумма всех его перемещений равна нулю:

− 47+ n(a+ 31)+ 82 = 0  по оси X

− 19+ n(9+ b)− 23 = 0  по оси Y

n(a +31) = − 35

n(9 +b) = 42

Теперь наша задача найти число на которое делится 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())

Ответ: 7

Ошибка.
Попробуйте повторить позже

Задача 50#63637Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду сместиться на (c, d), где c и d — целые числа, которык перемещают Чертёжника из точки с координатами (x, y) в точку с координатами (x + c, y + d).

Чертёжнику был дан для исполнения следующий алгоритм:

НАЧАЛО

   сместиться на (-29, -100)

   ПОВТОРИ k РАЗ

      сместиться на (c, 87)

      сместиться на (32, d)

   КОНЕЦ ПОВТОРИ

   сместиться на (-25, 19)

КОНЕЦ

Укажите максимальное значение числа k > 1, для которого найдутся такие значения чисел c и d, что после выполнения программы Чертёжник возвратится в исходную точку.

Показать ответ и решение

Аналитическое решение:

Запишем условие в виде системы:

(
{   − 29+ k ∗(c+ 32)− 25 = 0
(
    − 100+ k ∗(d+ 87)+ 19 = 0

(
{   k ∗(c+ 32) = 54

(   k ∗(d+ 87) = 81

Нам нужно найти наибольшее k, чтобы система выполнялась. НОД(54, 81) = 27.

 

Программное решение:

for n in range(100):
    for c in range(-500, 500):
        for d in range(-500, 500):
            x = y = 0
            x = x - 29
            y = y - 100
            for i in range(n):
                x = x + c
                y = y + 87
                x = x + 32
                y = y + d
            x = x - 25
            y = y + 19
            if x == 0 and y == 0:
                print(n)
                break

Ответ: 27

Ошибка.
Попробуйте повторить позже

Задача 51#63638Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a,b) (где a, b — целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x +a, y +b). Если числа a, b положительные, значение соответствующей координаты увеличивается, если отрицательные — уменьшается. Например, если Чертёжник находится в точке с координатами (2, 3), то команда Сместиться на (-5,2) переместит Чертёжника в точку (-3, 5).

Чертёжнику был дан для исполнения следующий алгоритм (количество повторений и величины смещения в первой из повторяемых команд неизвестны):

НАЧАЛО

   Сместиться на (-11,32)

   ПОВТОРИ ... РАЗ

      Сместиться на (15,-12)

      Сместиться на (... , ...)

   КОНЕЦ ПОВТОРИ

   Сместиться на (-19,38)

КОНЕЦ

В результате выполнения этого алгоритма Чертёжник возвращается в исходную точку. Какое наибольшее число повторений могло быть указано в конструкции «ПОВТОРИ ... РАЗ?

Показать ответ и решение

Аналитическое решение:

Запишем условие в виде системы:

(
{  − 11+ n ∗(a+ 15)− 19 = 0
(
   32 + n∗ (b − 12) +38 = 0

(
{   n∗ (a+ 15) = 30

(   n∗ (b− 12) = − 70

Нам нужно найти наибольшее n, чтобы система выполнялась. НОД(30, -70) = 10.

 

Программное решение:

for n in range(100):
    for c in range(-500, 500):
        for d in range(-500, 500):
            x = y = 0
            x = x - 11
            y = y + 32
            for i in range(n):
                x = x + 15
                y = y - 12
                x = x + c
                y = y + d
            x = x - 19
            y = y + 38
            if x == 0 and y == 0:
                print(n)
                break

Ответ: 10

Ошибка.
Попробуйте повторить позже

Задача 52#63639Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a,b) (где a, b — целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x +a, y +b). Если числа a, b положительные, значение соответствующей координаты увеличивается, если отрицательные — уменьшается. Например, если Чертёжник находится в точке с координатами (2, 3), то команда Сместиться на (-5,2) переместит Чертёжника в точку (-3, 5).

Чертёжнику был дан для исполнения следующий алгоритм (буквами n, a, b обозначены неизвестные числа, при этом n > 1):

НАЧАЛО

   ПОВТОРИ n РАЗ

      Сместиться на (-24, -7)

      Сместиться на (a, b)

      Сместиться на (15, 23)

   КОНЕЦ ПОВТОРИ

   Сместиться на (9, 16)

КОНЕЦ

Укажите наименьшее возможное значение числа n > 1, для которого найдутся такие значения чисел a и b, что Чертёжник, начав выполнение программы из точки с координатами (-18,14), после выполнения алгоритма окажется в точке (12, 15).

Показать ответ и решение

Аналитическое решение:

Запишем условие в виде системы:

(
{  − 18+ n ∗(a− 24+ 15)+ 9 = 12
(
   14 + n∗(b− 7 + 23)+ 16 = 15

(
{   n∗ (a− 9) = 21

(   n∗ (b+ 16) = − 15

Нам нужно найти наименьшее n, чтобы система выполнялась. И 21, и -15 делятся на 3, значит n = 3.

 

Программное решение:

for n in range(30):
    for a in range(-100, 100):
        for b in range(-100, 100):
            x = -18
            y = 14
            for i in range(n):
                x = x - 24
                y = y - 7
                x = x + a
                y = y + b
                x = x + 15
                y = y + 23
            x = x + 9
            y = y + 16
            if x == 12 and y == 15:
                print(n)
                break

Ответ: 3

Ошибка.
Попробуйте повторить позже

Задача 53#63640Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду сместиться на (c, d), где c и d — целые числа, которые перемещают Чертёжника из точки с координатами (x, y) в точку с координатами (x + c, y + d).

Чертёжнику был дан для исполнения следующий алгоритм:

НАЧАЛО

   сместиться на (17, 11)

   ПОВТОРИ k РАЗ

      сместиться на (c, d)

      сместиться на (-5, -13)

   КОНЕЦ ПОВТОРИ

   сместиться на (-73, -60)

КОНЕЦ

Укажите количество чисел k > 1, для которого найдутся такие значения чисел c и d, что после выполнения программы Чертёжник возвратится в исходную точку.

Показать ответ и решение

Аналитическое решение:

Запишем условие в виде системы:

(
{   17+ k∗ (c− 5)− 73 = 0
(
    11+ k∗ (d− 13)− 60 = 0

(
{   k∗(c− 5) = 56

(   k∗(d − 13) = 49

Нам нужно найти все k > 1, при которых система будет выполняться, то есть все общие делители чисел 56 и 49.

Делители числа 56: 2, 4, 7, 8, 14, 28, 56.

Делители числа 49: 7, 49.

Общий делитель у чисел только 1 - это число 7, значит ответ будет - 1.

 

Программное решение:

cnt = set()
for n in range(2, 100):
    for a in range(-500, 500):
        for b in range(-500, 500):
            x = y = 0
            x = x + 17
            y = y + 11
            for i in range(n):
                x = x + a
                y = y + b
                x = x - 5
                y = y - 13
            x = x - 73
            y = y - 60
            if x == 0 and y == 0:
                cnt.add(n)
                break
print(len(cnt))

Ответ: 1

Ошибка.
Попробуйте повторить позже

Задача 54#63641Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду сместиться на (c, d), где c и d — целые числа, которые перемещают Чертёжника из точки с координатами (x, y) в точку с координатами (x + c, y + d).

Чертёжнику был дан для исполнения следующий алгоритм:

НАЧАЛО

   сместиться на (-3, 24)

   ПОВТОРИ k РАЗ

      сместиться на (91, b)

      сместиться на (a, 54)

   КОНЕЦ ПОВТОРИ

   сместиться на (-15, 24)

КОНЕЦ

Укажите количество чисел k > 1, для которого найдутся такие значения чисел a и b, что после выполнения программы Чертёжник возвратится в исходную точку.

Показать ответ и решение

Решение руками

Запишем условие в виде системы:

(
{   − 3 + k∗ (91 + a)− 15 = 0
(
    24+ k ∗(b+ 54)+ 24 = 0

(
{   k∗ (a+ 91) = 18

(   k∗ (b+ 54) = − 48

Нам нужно найти количество подходящих k, для этого нужно определить все общие делители 18 и 48. Разложим на простые множетели: 18 = 2 ⋅3 ⋅3  , 48 = 2⋅2⋅2 ⋅2⋅3  . Общие множители 2, 3, тогда общими делителями 18 и 48 будут 2,3  и 2⋅3 = 6  . Всего их 3.

Решение программой

cnt = set()
for n in range(2, 100):
    for a in range(-100, 100):
        for b in range(-100, 100):
            x = y = 0
            x = x - 3
            y = y + 24
            for i in range(n):
                x = x + 91
                y = y + b
                x = x + a
                y = y + 54
            x = x - 15
            y = y + 24
            if x == 0 and y == 0:
                cnt.add(n)
                break
print(len(cnt))

Ответ: 3

Ошибка.
Попробуйте повторить позже

Задача 55#63642Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a,b) (где a, b — целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x +a, y +b). Если числа a, b положительные, значение соответствующей координаты увеличивается, если отрицательные — уменьшается. Например, если Чертёжник находится в точке с координатами (2, 3), то команда Сместиться на (-5,2) переместит Чертёжника в точку (-3, 5).

Чертёжнику был дан для исполнения следующий алгоритм (количество повторений и величины смещения в первой из повторяемых команд неизвестны):

НАЧАЛО

   Сместиться на (12, 11)

   ПОВТОРИ ... РАЗ

      Сместиться на (... , ...)

      Сместиться на (1, 2)

   КОНЕЦ ПОВТОРИ

   Сместиться на (-57,49)

КОНЕЦ

В результате выполнения этого алгоритма Чертёжник возвращается в исходную точку. Какое наибольшее число повторений могло быть указано в конструкции «ПОВТОРИ ... РАЗ?

Показать ответ и решение

Решение руками

Запишем условие в виде системы:

(
{   12+ k∗ (x + 1)− 57 = 0
(
    11+ k∗ (y + 2)+ 49 = 0

(
{  k ∗(x+ 1) = 45

(  k ∗(y+ 2) = − 60

Можно заметить, что нам требуется такое максимальное число k, чтобы оно было делителем и 45, и -60, т.е. НОД этих чисел. НОД(45,60)=15.

Решение программой

for n in range(100):
    for a in range(-500, 500):
        for b in range(-500, 500):
            x = y = 0
            x = x + 12
            y = y + 11
            for i in range(n):
                x = x + a
                y = y + b
                x = x + 1
                y = y + 2
            x = x - 57
            y = y + 49
            if x == 0 and y == 0:
                print(n)
                break

Ответ: 15

Ошибка.
Попробуйте повторить позже

Задача 56#63643Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a,b) (где a, b — целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x +a, y +b). Если числа a, b положительные, значение соответствующей координаты увеличивается, если отрицательные — уменьшается. Например, если Чертёжник находится в точке с координатами (2, 3), то команда Сместиться на (-5,2) переместит Чертёжника в точку (-3, 5).

Чертёжнику был дан для исполнения следующий алгоритм (количество повторений и величины смещения в первой из повторяемых команд неизвестны):

НАЧАЛО

   Сместиться на (-1, -2)

   ПОВТОРИ ... РАЗ

      Сместиться на (... , ...)

      Сместиться на (-1, -2)

   КОНЕЦ ПОВТОРИ

   Сместиться на (-20, -12)

КОНЕЦ

В результате выполнения этого алгоритма Чертёжник возвращается в исходную точку. Какое наибольшее число повторений могло быть указано в конструкции «ПОВТОРИ ... РАЗ?

Показать ответ и решение

Решение руками

Запишем условие в виде системы:

(
{  − 1+ k ∗(x− 1)− 20 = 0
(
   − 2+ k ∗(y− 2)− 12 = 0

(
{  k ∗(x − 1) = 21

(  k ∗(y− 2) = 14

Можно заметить, что нам требуется такое максимальное число k, чтобы оно было делителем и 21, и 14, т.е. НОД этих чисел. НОД(21,14)=7.

Решение программой

for n in range(100):
    for a in range(-500, 500):
        for b in range(-500, 500):
            x = y = 0
            x = x - 1
            y = y - 2
            for i in range(n):
                x = x + a
                y = y + b
                x = x - 1
                y = y - 2
            x = x - 20
            y = y - 12
            if x == 0 and y == 0:
                print(n)
                break

Ответ: 7

Ошибка.
Попробуйте повторить позже

Задача 57#63921Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a,b) (где a, b — целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x +a, y +b). Если числа a, b положительные, значение соответствующей координаты увеличивается, если отрицательные — уменьшается. Например, если Чертёжник находится в точке с координатами (2, 3), то команда Сместиться на (-5,2) переместит Чертёжника в точку (-3, 5).

Чертёжнику был дан для исполнения следующий алгоритм (количество повторений и величины смещения в первой из повторяемых команд неизвестны):

НАЧАЛО

   Сместиться на (2, -5)

   ПОВТОРИ ... РАЗ

      Сместиться на (25, 12)

      Сместиться на (... , ...)

   КОНЕЦ ПОВТОРИ

   Сместиться на (-17, -35)

КОНЕЦ

В результате выполнения этого алгоритма Чертёжник возвращается в исходную точку. Какое наибольшее число повторений могло быть указано в конструкции «ПОВТОРИ ... РАЗ?

Показать ответ и решение

Аналитическое решение:

Запишем условие в виде системы:

(
{   2+ n∗ (a+ 25)− 17 = 0
(
    − 5+ n ∗(b+ 12)− 35 = 0

(
{   n∗ (a+ 25) = 15

(   n∗ (b+ 12) = 40

Нам нужно найти наибольшее n, чтобы система выполнялась. НОД(15, 40) = 5.

 

Программное решение:

for n in range(100):
    for a in range(-500, 500):
        for b in range(-500, 500):
            x = y = 0
            x = x + 2
            y = y - 5
            for i in range(n):
                x = x + 25
                y = y + 12
                x = x + a
                y = y + b
            x = x - 17
            y = y - 35
            if x == 0 and y == 0:
                print(n)

Ответ: 5

Ошибка.
Попробуйте повторить позже

Задача 58#72400Максимум баллов за задание: 1

Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a, b) (где a, b – целые числа), перемещающую Чертёжника из точки с координатами (x, y) в точку с координатами (x + a, y + b). Чертёжнику был дан для исполнения следующий алгоритм:

Сместиться на (3, -8)

Повтори N раз

   Сместиться на (7, b)

   Сместиться на (a, 50)

Конец Повтори

Сместиться на (-31, 57)

Определите максимальное натуральное значение N, для которого найдутся такие значения чисел a и b, что после выполнения программы Чертёжник возвратится в исходную точку?

Показать ответ и решение

Решение руками

Запишем два уравнения и составим из них систему. Система будет иметь такой вид:

(
{3 + n(7 + a)− 31 = 0
(
 − 8+ n(b+ 50)+ 57 = 0

Перенесём известную часть на правую сторону. Тогда получим:

({
  n(7 + a) = 28
( n(b + 50) = − 49

Поделим данные уравнения на n. Получим:

({        28
  7+ a = n-
( b+ 50 = −49
           n

НОД для 28 и -49 равен 7. Ответ:7.

Решение программой

def find_max_n():
    max_n = 0
    for n in range(1, 29):
        if 28 % n == 0:
            a = (28 // n) - 7
            if -49 % n == 0:
                b = (-49 // n) - 50
                x = 3 + n * (7 + a) - 31
                y = -8 + n * (b + 50) + 57
                if x == 0 and y == 0:
                    max_n = n
    return max_n


result = find_max_n()
print(result)


Ответ: 7
Рулетка
Вы можете получить скидку в рулетке!