27.06 Макс/мин, кол-во пар, произведение кратно/не кратно
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Имеется набор данных, состоящий из положительных целых чисел. Необходимо найти наибольшее произведение двух элементов, с разными номерами, кратное 10. Гарантируется, что хотя бы одно такое произведение в последовательности есть. Программа должна напечатать одно число — максимально возможное произведение, которое соответствует условиям задачи.
Входные файлы:
Файл 27 A
Файл 27 B
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество
пар Каждая из следующих N строк содержит натуральное число, не превышающих
1000.
Пример организации исходных данных во входном файле:
5
100
594
743
149
267
Для указанных входных данных значением искомого произведения должно быть 74300.
В ответе укажите два числа: сначала значение искомого произведения для файла А, затем для файла B.
Переборное решение
f = open("27A.txt") n = int(f.readline()) a = [int(f.readline()) for x in range(n)] ans = 0 for i in range(n): for j in range(i + 1, n): if (a[i] * a[j]) % 10 == 0: ans = max(ans, a[i] * a[j]) print(ans)
Статическое решение
f = open(’Задание_27_B__f6wi.txt’) n = int(f.readline()) max_kr10 = 0 # Максимальное число, кратное 10 predmax_kr10 = 0 # Второе по величине число, кратное 10 max_kr5 = 0 # Максимальное число, кратное 5, но не 10 max_kr2 = 0 # Максимальное число, кратное 2, но не 10 max_nekr = 0 # Максимальное число, не кратное 2, 5 или 10 for i in range(n): x = int(f.readline()) if x % 10 == 0: if x > max_kr10: predmax_kr10 = max_kr10 max_kr10 = x elif x > predmax_kr10: predmax_kr10 = x elif x % 5 == 0: max_kr5 = max(max_kr5, x) elif x % 2 == 0: max_kr2 = max(max_kr2, x) else: max_nekr = max(x, max_nekr) # Возможные пары: # максимальное число, кратное 10, и любое другое pair1 = max_kr10 * max(predmax_kr10, max_kr5, max_kr2, max_nekr) # максимальные числа, кратные 5 и 2 pair2 = max_kr5 * max_kr2 print(max(pair1, pair2))
Динамическое решение
f = open(’Задание_27_B__f6wi.txt’) n = int(f.readline()) max_kr10 = 0 # Максимальное число, кратное 10 max_kr5 = 0 # Максимальное число, кратное 5, но не 10 max_kr2 = 0 # Максимальное число, кратное 2, но не 10 max_nekr = 0 # Максимальное число, не кратное 2, 5 или 10 ans = 0 for i in range(n): x = int(f.readline()) if x % 10 == 0: ans = max(ans, x*max_nekr, x*max_kr10, x*max_kr2, x*max_kr5) max_kr10 = max(max_kr10, x) elif x % 5 == 0: ans = max(ans, x*max_kr10, x*max_kr2) max_kr5 = max(max_kr5, x) elif x % 2 == 0: ans = max(ans, x*max_kr10, x*max_kr5) max_kr2 = max(max_kr2, x) else: ans = max(ans, x*max_kr10) max_nekr = max(x, max_nekr) print(ans)
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!