Форум » Обработка числовых последовательностей » Евич. ЕГЭ-2023. Вар 7. 27 задача » Ответить

Евич. ЕГЭ-2023. Вар 7. 27 задача

jonik: Всем привет. Привожу задачу из сборника Евича По каналу связи каждую секунду передается положительное целое число, все числа не превышают 10000. Передача происходит мгновенно. Необходимо вычислить минимальное кратное 3 произведение двух чисел, между моментами передачи которых прошло не менее 5 секунд. Если такое значение не удается получить, то следует выввести 0. Мой код [pre2] 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) [/pre2] Рассуждаю по типу очереди(FIFO): 1. записываю первые 5 в массив 2. в цикле достаю новое значение, ищу минимум из текущего и первого в очереди 3. считаю минимальное произведение по условию 4. удаляю первый, добавляю новый. Знаю что есть подобные задачи, но там либо нужно посчитать количество пар, либо найти кратную сумму. Здесь другое - произведение+минимальное. Пример из книги сходится, файл А - тоже, а вот B - нет

Ответов - 2

Ж: Мне кажется, что вы решаете задачу для случая, когда прошло не более 5 секунд. Попробуйте этот код (без данных я в нем не до конца уверена, но возможно он верен) [pre2] 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) [/pre2]

jonik: Да, спасибо, все работает



полная версия страницы