Рассмотрим бинарное дерево, у которого у каждой вершины ровно два потомка, за исключением вершин, потомками которых являются листья (лист может быть и один), а также самих листьев (у них нет потомков).
Вычислите максимально возможную высоту такого бинарного дерева, состоящего из 2020 элементов. Высотой дерева называется количество вершин на пути от корня до максимально удаленного от него листа, включая их.
Я не уверен в решении от слова совсем, но смотри... Читаем внимательно условие.
...КАЖДАЯ КОМАНДА СЫГРАЛА С КАЖДОЙ. Из ВСЕХ участвовавших команд 20% команд НЕ СМОГЛИ ОДЕРЖАТЬ ПОБЕДУ НИ В ОДНОМ ИЗ МАТЧЕЙ...
Теперь включаем логику. Допустим у нас есть 10 команд, которые сыграли между собой. 20% от 10 - 2. Получается у нас имеется 2 команды, которые проиграли ВО ВСЕХ МАТЧАХ. А теперь задаемся вопросом "это как?".
Если с остальными командами все понятно, то как они играя между собой могли проиграть 2 сразу? (Ведь очевидно, что может быть только один победитель и только один проигравший в матче) По условию - ничьи не было. Значит делаем вывод, что искать больше одной команды, которая проиграла всем - некорректно.
Число команд, которая дает нам от 20% одного аутсайдера - 5. Получаем, что если Катя сделала фото с каждой командой на турнире, то постов у нее будет тоже 5. А команда, которая проиграла всем - одна единственная.
Ошибок тут достаточно, по всем пройдемся.
Первая ошибка, переменная названа как встроенная функция в Python, так делать не нужно.
Вторая ошибка, забыл ограничить if, из-за которого не будет выполняться elif. Меняем его на:
if (sum>=500) and (sum<1000)
Третья ошибка, расчет финальной цены неверный, если использовать вариант, который дан сейчас, то мы найдем процент от этой суммы, а не сумму с начисленными процентами. Меняем на:
final_sum = sums * (1+first_sale)
final_sum = sums * (1+second_sale)
Четвертая ошибка, почему у нас вывод финальной суммы через else? Получается, что если выполняются условия выше, то не выводится сумма. Этот вывод мы можем опустить ниже, а в else написать, что ввели неверные данные (если конечно подразумевается, что пользователь не должен вводить число меньшее 500), либо в elif засунуть эту строку, полной задачи у меня нет, поэтому сам с этим разберешься.
Пятая ошибка, мы не можем сложить строку с числом, нам нужно преобразовать нашу переменную к строке с str().
Исправленный код:
sums = int(input("Введите сумму покупки:"))
first_sale = 0.03
second_sale = 0.05
if sums >= 500 and sums < 1000:
final_sum = sums * (1+first_sale)
print("Финальная сумма равна: " + str(final_sum))
elif sums >= 1000:
final_sum = sums * (1+second_sale)
print("Финальная сумма равна: " + str(final_sum))
else:
print("Введены неверные данные")