Егэ информатика 17 номер. Составил програму для вычисления на Python ответ не совпадает, что неправильно? В файле содержится последовательность из 10 000 целых положительных чисел. Каждое число не превышает 10 000. Определите и запишите в ответе сначала количество пар элементов последовательности, у которых сумма элементов кратна 7, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два различных элемента последовательности. Порядок элементов в паре не важен Вот программа которую я состави with open('17.txt') as f s = [int(x) for x in f res = [ for i in range(0, len(s)-1) for j in range(i, len(s)) if (s[i] + s[j]) % 7 == 0 res.append(s[i] + s[j] print(len(res), max(res) Мой ответ 7144001 1999 А правильный 7142586 1999 Где ошибка?
Ошибка заключается в том, что внутри цикла вы сравниваете элементы последовательности сами с собой (i и j могут быть равными). Для того чтобы избежать этого, вам нужно изменить внутренний цикл на range(i+1, len(s)). Таким образом, каждый элемент будет сравниваться только с последующими элементами, а не с самим собой. Исправленный код будет выглядеть следующим образом:
with open('17.txt') as f s = [int(x) for x in f res = [ for i in range(0, len(s)-1) for j in range(i+1, len(s)) if (s[i] + s[j]) % 7 == 0 res.append(s[i] + s[j] print(len(res), max(res))
После исправления данной ошибки, ваш ответ должен совпасть с правильным.
Ошибка заключается в том, что внутри цикла вы сравниваете элементы последовательности сами с собой (i и j могут быть равными). Для того чтобы избежать этого, вам нужно изменить внутренний цикл на range(i+1, len(s)). Таким образом, каждый элемент будет сравниваться только с последующими элементами, а не с самим собой. Исправленный код будет выглядеть следующим образом:
with open('17.txt') as fs = [int(x) for x in f
res = [
for i in range(0, len(s)-1)
for j in range(i+1, len(s))
if (s[i] + s[j]) % 7 == 0
res.append(s[i] + s[j]
print(len(res), max(res))
После исправления данной ошибки, ваш ответ должен совпасть с правильным.