Автор | Сообщение |
|
Отправлено: 08.11.20 17:37. Заголовок: Возможно опечатка или ошибка в задаче КИМ 26
|
|
|
Ответов - 7
[только новые]
|
|
|
| Администратор
|
Сообщение: 2119
|
|
Отправлено: 08.11.20 18:31. Заголовок: SergeyK пишет: То-ли..
SergeyK пишет: цитата: | То-ли продавец хитрее, то-ли где-то ошибка |
|
Показывайте решение. Будем разбираться.
|
|
|
|
Отправлено: 08.11.20 19:59. Заголовок: ''' W..
''' − на каждый второй товар ценой больше 200 рублей предоставляется скидка 30%; − общая цена покупки со скидкой округляется вверх до целого числа рублей; − порядок товаров в списке определяет магазин и делает это так, чтобы общая сумма скидки была наименьшей. Вам необходимо определить общую цену закупки с учётом скидки и цену самого дорогого товара, на который будет предоставлена скидка. Входные данные. Первая строка входного файла 26-s1.txt содержит число N – общее количество купленных товаров. Каждая из следующих N строк содержит одно целое число – цену товара в рублях. В ответе запишите два целых числа: сначала общую цену покупки с учётом скидки, затем цену самого дорогого товара, на который предоставлена скидка. Пример входного файла 7 225 160 380 95 192 310 60 В данном случае товары с ценой 60, 95, 160 и 192 не участвуют в определении скидки, остальные товары магазину выгодно расположить в таком порядке цен: 380, 225, 310. Скидка предоставляется на товар ценой 225. Его цена со скидкой составит 157,5 руб., после округления – 158 руб. Общая цена покупки составит: 60 + 95 + 160 + 192 + 158 + 380 + 310 = 1355 руб. Самый дорогой товар, на который будет получена скидка, стоит 225 руб. В ответе нужно записать числа 1377 и 225. ''' import sys import math #save_stdin = sys.stdin #sys.stdin = open("24_2.txt") k = 0.3 # 30% s = 0 mx = 0 i = 1 minPr = [] # p < 200 maxPr = [] # p >= 200 ans = [] # для отладки n = int(input()) for i in range(n): p = int(input()) if p > 200: maxPr.append(p) else: minPr.append(p) s = sum(minPr) # всё что меньше или равно 200 суммируем сразу ans += minPr # складываем в [] для визуализации результата maxPr.sort() # всё, что больше 200 сортируем maxPr_len = len(maxPr) mid = maxPr_len // 2 # вычисляем середину half_maxPr1 = maxPr[mid :] # дорогие товары half_maxPr2 = maxPr[:mid] # дешёвые товары s += sum(maxPr[mid :]) # дорогие сразу суммируем (скидки не делаем) ans += maxPr[mid :] # складываем в [] для визуализации результата # на дешёвые, которые > 200 делаем скидки for p0 in maxPr[:mid]: p = math.ceil((1 - k) * p0) #print("p% = ", p) if p0 > mx: mx = p0 s += p # товар со скидкой добавляем к общей сумме ans.append(p) ans.sort() # складываем в [] для визуализации результата print(s, mx) # общая сумма и максимальный товар, на который была скидка print(*ans) # все товары print(sum(ans)) print(len(ans)) #sys.stdin =save_stdin #======================= >>> %Run 24_2.py 7 225 160 380 95 192 310 60 1355 225 60 95 158 160 192 310 380 1355 7 >>> Скидка предоставляется на товар ценой 225. Его цена со скидкой составит 157,5 руб., после округления – 158 руб. Общая цена покупки составит: 60 + 95 + 160 + 192 + 158 + 380 + 310 = 1355 руб. Самый дорогой товар, на который будет получена скидка, стоит 225 руб.
|
|
|
|
Отправлено: 08.11.20 20:01. Заголовок: Так не пойдёт. Я пок..
Так не пойдёт. Я пока не разобрался с этим форумом, как вставлять код, что бы отступы не исчезали... Сейчас ссылку на нормальный код передам.
|
|
|
|
| Администратор
|
Сообщение: 2120
|
|
Отправлено: 08.11.20 20:08. Заголовок: SergeyK пишет: как в..
SergeyK пишет: Вставить в блок pre2:\[pre2\] ... код [\/pre2] . Здесь все знаки \ нужно убрать.
|
|
|
|
Отправлено: 08.11.20 20:06. Заголовок: https://repl.it/@int..
[url=https://repl.it/@intepra/kEGE24-2#main.py]Ссылка на задачу[/url] Видимо @ не даёт форуму корректно обработать ссылку Тогда так: https://clck.ru/RpXdE Если снять комментарии: #save_stdin = sys.stdin #sys.stdin = open("24_2.txt") #sys.stdin =save_stdin Будут обработаны большие данные
|
|
|
|
| Администратор
|
Сообщение: 2121
|
|
Отправлено: 08.11.20 21:08. Заголовок: SergeyK пишет: Ссылк..
SergeyK пишет: цитата: | [url=https://repl.it/@intepra/kEGE24-2#main.py]Ссылка на задачу[/url] |
|
Вы округляете вверх стоимость каждой покупки со скидкой, а нужно округлять общую сумму.
|
|
|
|
Отправлено: 08.11.20 21:34. Заголовок: Ox, спасибо большое!..
Ox, спасибо большое! Как все просто оказалось, как можно быть таким невнимательным: "− общая цена покупки со скидкой округляется вверх...."
|
|
|
|