Мини-урок · перед практикой

Шнурки

Считаем горизонтальные и вертикальные участки шнурка и два свободных конца.

Как к ней подойти

Разберитесь, как данные попадают в программу, как из них получить ответ и в каком виде его вывести.

Коротко о теме

Программа получает данные через input(), преобразует их в нужный тип и передаёт результат в print(). Сначала разберитесь, какие числа или строки даны, затем запишите вычисление и проверьте формат вывода.

Ключевая идея · Формула длины

По схеме один горизонтальный участок соединяет нижние отверстия. На каждом из n−1 следующих уровней обе ветви добавляют по горизонтальному участку a и вертикальному участку b. Всего получается 2n−1 горизонталей, 2(n−1) вертикалей и два конца длиной l.

Проверьте перед запуском

  • Два свободных конца дают 2l.
  • Между n отверстиями в одном ряду только n−1 промежутков.
  • При n=1 ответ равен a+2l.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение: Формула длины

По схеме один горизонтальный участок соединяет нижние отверстия. На каждом из n−1 следующих уровней обе ветви добавляют по горизонтальному участку a и вертикальному участку b. Всего получается 2n−1 горизонталей, 2(n−1) вертикалей и два конца длиной l.

a = int(input())
b = int(input())
l = int(input())
n = int(input())
print((2 * n - 1) * a + 2 * (n - 1) * b + 2 * l)

Время: O(1) арифметических операций. Память: O(1) числовых переменных.

Другой способ: Наращивание по уровням

Начинаем с нижней перемычки и свободных концов. Каждый дополнительный уровень отверстий удлиняет обе ветви на a+b. Цикл помогает проверить смысл формулы, но при большом n формула быстрее.

a = int(input())
b = int(input())
l = int(input())
n = int(input())
length = a + 2 * l
for _ in range(n - 1):
    length += 2 * (a + b)
print(length)

Время: O(n). Память: O(1) числовых переменных.