Ни одна пара не подходит под условие в моём коде для решения 17 задания ЕГЭ, не могу понять почему

Рейтинг: 0Ответов: 1Опубликовано: 11.06.2023

В общем вот ссылка на задание - https://inf-ege.sdamgia.ru/problem?id=37368

Вот мой код:

with open('17.txt') as f:
    s = [int(i) for i in f]
r = []
for i in range(len(s) - 1):
    for j in range(i + 1, len(s)):
        if (s[i] + s[j] % 60 == 0) and ((s[i] % 40 == 0) or (s[j] % 40 == 0)):
            r.append(s[i] + s[j])
print(len(r), max(r))

Как я понял, дело в том, что ни одна пара не подходит под условие, потому что len(r) остаётся равным нулю после выполнения кода. При этом список s заполняется правильно. Я разное попробовал, но просто нигде не вижу ошибки. PyCharm ошибок в коде не показывает

Ответы

▲ 2Принят

Скорее всего проблема в приоритете операторов

import dis


dis.dis("a + b % 60")

Вывод:

1             0 LOAD_NAME                0 (a)
              2 LOAD_NAME                1 (b)
              4 LOAD_CONST               0 (60)
              6 BINARY_MODULO
              8 BINARY_ADD
             10 RETURN_VALUE

Сначала идёт деление по модулю (BINARY_MODULO), затем сложение (BINARY_ADD), т. е. получается s[i] + (s[j] % 60). Для решения можно просто добавить скобки:

(s[i] + s[j]) % 60