Задание 17 ЕГЭ: ищу пары чисел в файле, не сходится ответ. Что не так?
В 17-м дан файл из целых чисел, надо найти количество пар (или пар, идущих подряд / на расстоянии) с каким-то условием — например, сумма кратна минимальному элементу, и максимальную сумму такой пары. Файл читаю, а ответ не совпадает с эталоном. Где обычно косяк?
4 ответа
Чаще всего ошибка в определении «пары». В ЕГЭ пара — это элементы, у которых разница индексов больше 1 (не соседние), если прямо не сказано «идущих подряд». Внимательно перечитай условие. Базовый каркас:
with open('17.txt') as fp:
a = [int(x) for x in fp]
mn = min(a)
count = 0
best = -10**9
for i in range(len(a)):
for j in range(i + 1, len(a)): # все пары i<j
s = a[i] + a[j]
if s % mn == 0: # условие из задачи
count += 1
best = max(best, s)
print(count, best)
Если просят «соседние» — замени внутренний цикл на j = i + 1. И не забудь, что минимум/среднее обычно считается по ВСЕМ числам, а не по отфильтрованным.
99% таких косяков — неверно понял, что считается парой (подряд vs любые i<j) и по чему берётся min/среднее.
Покажи условие целиком, без него гадаем. Но скорее всего перепутал «соседние» и «любые две».
Читай файл через int(input()) в цикле, файлы в питоне неудобные.