Шнурки
Вы решили задачу. Теперь можно сравнить подходы.
Считаем горизонтальные и вертикальные участки шнурка и два свободных конца.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Формула длины
По схеме один горизонтальный участок соединяет нижние отверстия. На каждом из 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) числовых переменных.
На что обратить внимание
- Два свободных конца дают 2l.
- Между n отверстиями в одном ряду только n−1 промежутков.
- При n=1 ответ равен a+2l.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.