@5254915cdfg

ЕГЭ Информатика задание 27: что не так с моим кодом?

Задание
В текстовом файле записан набор натуральных чисел, не превышающих 108. Гарантируется, что все числа различны. Из набора нужно выбрать три числа, сумма которых делится на 3. Какую наименьшую сумму можно при этом получить?

Первая строка входного файла содержит целое число N — общее количество чисел в наборе. Каждая из следующих N строк содержит одно число.

Пример входного файла:
4
5
8
14
11

В данном случае есть четыре подходящие тройки: 5, 8, 11 (сумма 24); 5, 8, 14 (сумма 27); 5, 14 11 (сумма 30) и 8, 14, 11 (сумма 33). В ответе надо записать число 24.

Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала значение искомой суммы для файла A, затем для файла B.

Содержимое Файла
203
376
432
217
56
523
503
273
513
246
323
215
136
487
375
25
880
364
308
838
894
694
898
667
951
775
566
850
268
406
724
832
617
919
691
193
874
286
206
516

Код
f = open('24.txt').readlines()

for x in f:
    for y in f:
        for z in f:
            n = int(x) + int(y) + int(z)
            if n % 3 == 0:
                print(n)


При запуске выдаёт ошибку: ValueError: invalid literal for int() with base 10: '\n'
Если убираю символ '\n' через x.strip() выдаёт: ValueError: invalid literal for int() with base 10: ''
Из-за этой ошибки прогоняется только z, а остальные застревают на первой позиции списка.
Бьюсь уже несколько часов, ничего не получается.
  • Вопрос задан
  • 800 просмотров
Решения вопроса 1
includedlibrary
@includedlibrary
Нужно убрать из строк символ переноса \n. Например, так:
f = open("24.txt").read().split("\n")

Ещё будет лучше сначала превратить строки в числа, а только потом три цикла запускать
f = [int(x) for x in open("24.txt").read().split("\n")]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы