Задание 27 #01

Наборы тестовых данных для 27 #01
Набор 1:
n = 2 
c = [5, 17]
Вывод: "5 17" или "17 5"
------------
Набор 2:
n = 2 
c = [17, 51]
Вывод: "17 51" или "51 17"
------------
Набор 3:
n = 2
c = [51, 17]
Вывод: "17 51" или "51 17"
------------
Набор 4:
n = 3
c = [85, 51, 17]
Вывод: "51 85" или "85 51"


Идея оптимального решения 27 #01


Пусть a1, b1 = оба нечетные, где a1 — макс неч кр 17.
Возможны два варианта:
1. a1 — и есть макс неч вообще, тогда b1 — должно быть второе по величине неч число (кратность b1 не важна).
2. a1 — не явл макс неч в целом, то b1 — макс неч. (оно не будет кратно 17).
———————————————
Пусть a2, b2 = оба четные, где a2 — макс четн кр 17.
Возможны два варианта:
1. a2 — и есть макс четн вообще, тогда b2 — второе по величине чет число (кратность b2 не важна).
2. a2 — не явл макс четн в целом, то b2 — макс четн (оно не будет кратно 17).

Остается только сравнить суммы.

Оптимальное решение 27 #01
max_odd_17 = 0 
sec_max_odd = 0 
max_even_17 = 0 
sec_max_even = 0 
N = int(input()) 
for i in range(N): 
    numb = int(input()) 
    if numb % 2 == 0: 
        if numb % 17 == 0 and numb > max_even_17: 
            if sec_max_even < max_even_17: 
               sec_max_even = max_even_17 
            max_even_17 = numb 
        else: 
            sec_max_even = max(numb, sec_max_even) 
    else: 
        if numb % 17 == 0 and numb > max_odd_17: 
            if sec_max_odd < max_odd_17: 
                sec_max_odd = max_odd_17 
            max_odd_17 = numb 
        else: 
            sec_max_odd = max(numb, sec_max_odd) 

if max_odd_17 > 0 and max_even_17 > 0 and max_odd_17+sec_max_odd > max_even_17+sec_max_even: 
    print(max_odd_17, sec_max_odd) 
elif max_even_17 > 0 and sec_max_even > 0: 
    print(max_even_17, sec_max_even) 
elif max_odd_17 > 0 and sec_max_odd > 0: 
    print(max_odd_17, sec_max_odd) 
else: 
    print(0, 0)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *