Автор | Сообщение |
|
Отправлено: 29.03.24 10:44. Заголовок: Евич. ЕГЭ-2023. Вар 7. 27 задача
Всем привет. Привожу задачу из сборника Евича По каналу связи каждую секунду передается положительное целое число, все числа не превышают 10000. Передача происходит мгновенно. Необходимо вычислить минимальное кратное 3 произведение двух чисел, между моментами передачи которых прошло не менее 5 секунд. Если такое значение не удается получить, то следует выввести 0. Мой код lst = [] for _ in range(5): lst.append(int(f.readline())) p = 10**10 mn = 10 ** 10 for i in range(5, n): x = int(f.readline()) mn = min(mn, lst[0]) if mn % 3 == 0 or x % 3 == 0: p = min(p, mn*x) lst.pop(0) lst.append(x) print(p) Рассуждаю по типу очереди(FIFO): 1. записываю первые 5 в массив 2. в цикле достаю новое значение, ищу минимум из текущего и первого в очереди 3. считаю минимальное произведение по условию 4. удаляю первый, добавляю новый. Знаю что есть подобные задачи, но там либо нужно посчитать количество пар, либо найти кратную сумму. Здесь другое - произведение+минимальное. Пример из книги сходится, файл А - тоже, а вот B - нет
|
|
|
Ответов - 2
[только новые]
|
|
|
Отправлено: 29.03.24 15:37. Заголовок: Мне кажется, что вы ..
Мне кажется, что вы решаете задачу для случая, когда прошло не более 5 секунд. Попробуйте этот код (без данных я в нем не до конца уверена, но возможно он верен) s=[1,33,2,5,6,8,9,1,2,9,5] ost=[100000,100000,100000] mini=100000 for i in range(5,len(s)): if s[ i]%3==0 : mini=min(mini,s[ i]*min(ost)) else: mini=min(mini,s[ i]*ost[0]) ost[s[ i-5]%3]=min(ost[s[ i-5]%3],s[ i-5]) print(mini)
|
|
|
|
Отправлено: 01.04.24 09:56. Заголовок: Да, спасибо, все раб..
Да, спасибо, все работает
|
|
|
|