Задача к ЕГЭ по информатике на тему «Макс/мин, кол-во пар, произведение кратно/не кратно» №1

Задание выполняется с использованием прилагаемых файлов

Имеется набор данных, состоящий из положительных целых чисел. Необходимо найти наибольшее произведение двух элементов, с разными номерами, кратное 11  . Гарантируется, что хотя бы одно такое произведение в последовательности есть. Программа должна напечатать одно число — максимально возможное произведение, которое соответствует условиям задачи.

Входные файлы:

Файл 27 A

Файл 27 B

Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел N (1 ≤ N ≤ 100000)  . Каждая из следующих N  строк содержит натуральное число, не превышающих 1000  .

Пример организации исходных данных во входном файле:

4

44

10

11

56

Для указанных входных данных значением искомого произведения должно быть 2464  .

В ответе укажите два числа: сначала значение искомого произведения для файла А, затем, через пробел, для файла B.

Переборное решение

f = open(’Задание_27_A__d0r5.txt’)
n = int(f.readline())
a = [int(f.readline()) for i in range(n)]
ma = -999999999
for i in range(n):
    for j in range(i + 1, n):
        if a[i] * a[j] % 11 == 0:
            ma = max(ma, a[i] * a[j])
print(ma)

 Статическое решение

f = open(’Задание_27_B__d0r9.txt’)
n = int(f.readline())
mach, pmach, pmanch = 0, 0, 0
#mach - макс. кратное 11 число
#pmach - предмакс. кратное 11 число
#manch - макс. некратное 11 число
for i in range(n):
    x = int(f.readline())
    if x % 11 == 0:
        if mach < x:
            pmach = mach
            mach = x
        elif pmach < x:
            pmach = x
    elif pmanch < x:
        pmanch = x
print(max(mach * pmach, mach * pmanch))

 Динамическое решение

f = open(’Задание_27_B__d0r9.txt’)
n = int(f.readline())

ans = 0
max_kr11 = 0  # Максимальное число, кратное 11
max_nekr = 0  # Максимальное число, не кратное 11

for i in range(n):
    x = int(f.readline())
    if x % 11 == 0:
        ans = max(ans, x * max_nekr, x * max_kr11)
        max_kr11 = max(max_kr11, x)
    else:
        ans = max(ans, x * max_kr11)
        max_nekr = max(max_nekr, x)

print(ans)

Ответ: 371140 989010
Оцените статью
Я решу все!