Ctrl K

Округлить цены до нужной суммы

Средняя
Дан список цен prices — строки с ровно тремя знаками после точки, например "4.800". Каждую цену p нужно округлить до целого: либо вниз, до ⌊p⌋, либо вверх, до ⌈p⌉ (у целой цены оба варианта совпадают). Сумма округлённых цен должна быть ровно total. Ошибка округления — это сумма |округлённая − исходная| по всем ценам. Верните наименьшую возможную ошибку строкой с тремя знаками после точки (например, "1.000"). Если получить сумму total нельзя, верните "-1".
Пример 1
prices=['2.300', '4.800', '1.500'], total=9 → '1.000'

Нижние округления дают 2 + 4 + 1 = 7, значит, вверх нужно округлить ровно две цены. Выгоднее всего 4.800 → 5 и 1.500 → 2, а 2.300 → 2: ошибка 0.2 + 0.5 + 0.3 = 1.000.

Пример 2
prices=['3.000', '0.250'], total=5 → '-1'

Больше 3 + 1 = 4 получить нельзя, поэтому ответ «-1».

Пример 3
prices=['0.999', '7.000'], total=8 → '0.001'
Ограничения
  • 1 ≤ len(prices) ≤ 500
  • Каждая prices[i] — число от 0 до 1000 ровно с тремя знаками после точки
  • 0 ≤ total ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамое большое число из кусков СредняяСамые близкие показания часов СредняяПодтянуть или опустить СредняяСредний мешок СредняяЦена тает с каждой продажей Средняя
загружаем Python…
Вход
prices=['2.300', '4.800', '1.500'], total=9
Ожидается
'1.000'

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 108 тестов на сервере, включая скрытые.