Шнурки
Считаем горизонтальные и вертикальные участки шнурка и два свободных конца.
Как к ней подойти
Разберитесь, как данные попадают в программу, как из них получить ответ и в каком виде его вывести.
Программа получает данные через 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) числовых переменных.