Найти в Дзене

Задача 293. Налоги

Довольно комплексная задача для начинающих: и циклы, и поиск максимума, и понимание процентов. Давайте читать условие:

Условие задачи с сайта acmp.ru
Условие задачи с сайта acmp.ru

Очень понятное условие, ограничения очень небольшие, без подводных камней, поэтому можем сразу приступить к решению.

Считаем входные данные. Из особенностей, здесь нам совсем не нужно количество фирм, поэтому можем просто написать input(), никуда не сохраняя считанное число:

Считываем входные данные
Считываем входные данные

Два входных набора данных приведём к числовому типу, но не будем из них делать списки, так как задачу можно решить за один проход по ним, и здесь не потребуется произвольный доступ к элементам по индексу.

Заведём пару переменных, в которых будем хранить результаты - максимальное количество налогов, которые заплатила фирма, и её номер. Так как все значения неотрицательные, можем проинициализировать эти переменные нулями:

Переменные для хранения ответа
Переменные для хранения ответа

Осталось одновременно пройтись по массивам v и p и найти максимальное произведение. Так как нам ещё нужен номер фирмы, то используем функцию enumerate(), чтобы не поддерживать индекс вручную:

Вычисление максимального налога
Вычисление максимального налога

Да, для вычисления налога нельзя просто так умножить проценты на прибыль, надо ещё поделить на 100. Но здесь нам не нужен сам налог, а требуется лишь номер максимального значения. И если мы не будем все значения делить на 100, то и номер максимального не изменится (а мы при этом сэкономим на вычислениях).

И выведем номер фирмы:

Вывод ответа
Вывод ответа

Здесь надо не забыть прибавить 1, так как у нас везде индексация с нуля, а из условия задачи видно, что фирмы нумеруются с 1.

Предыдущий выпуск: Задача 271. Числа Фибоначчи - 2

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