Задание 17 · ЕГЭ, информатика 2027
Обработка последовательности
Файл из 1000 чисел, порог по всей последовательности и пары соседей.
Пять вариантов задания
Данные в вариантах разные, приём решения один. Отмеченные галочкой уже решены — отметка хранится в этом браузере.
17.txt — переименуйте или поправьте строку с open(...).Прочитать файл
Файл — это просто числа по строкам. Считываем их в список целых:a = [int(s) for s in open('17.txt')]. Преобразование вintобязательно: иначе сравнения будут строковыми и «9» окажется больше «100».Найти порог
Порог — максимального элемента последовательности, кратного 7. Его считают по всей последовательности один раз, до перебора пар. Здесь он равен 9954.Перебрать пары
Пара — соседние элементы, поэтому индекс i идёт от 0 до len(a) − 2, а сама пара это a[i] и a[i+1]. Для каждой пары проверяем оба условия сразу.Ответ
Подходящих пар 148, наибольшая сумма среди них — 19050. В бланк оба числа записываются через пробел: 148 19050.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
# Читаем файл: по одному числу в строке.
a = [int(line) for line in open('17.txt')]
# Сначала — порог. Его надо найти по ВСЕЙ последовательности,
# до того как начнём разбирать пары.
m = max(x for x in a if x % 7 == 0)
count = 0
best = 0
for i in range(len(a) - 1): # пар на одну меньше, чем чисел
x, y = a[i], a[i + 1]
if (x % 7 == 0 or y % 7 == 0) and x + y > m:
count += 1
if x + y > best:
best = x + y
print(count, best)Где обычно теряют балл
- Считать порог не по всей последовательности, а по уже отобранным парам — тогда он получится меньше и пар найдётся больше.
- Перебирать пары как a[i] и a[i+2] или считать парой любые два элемента: в условии пара — именно СОСЕДНИЕ элементы.
- Выйти за границу списка: цикл должен заканчиваться на len(a) − 1, иначе a[i+1] обратится к несуществующему элементу.
17.txt — переименуйте или поправьте строку с open(...).Прочитать файл
Файл — это просто числа по строкам. Считываем их в список целых:a = [int(s) for s in open('17.txt')]. Преобразование вintобязательно: иначе сравнения будут строковыми и «9» окажется больше «100».Найти порог
Порог — максимального элемента последовательности, кратного 5. Его считают по всей последовательности один раз, до перебора пар. Здесь он равен 9965.Перебрать пары
Пара — соседние элементы, поэтому индекс i идёт от 0 до len(a) − 2, а сама пара это a[i] и a[i+1]. Для каждой пары проверяем оба условия сразу.Ответ
Подходящих пар 18, наибольшая сумма среди них — 19360. В бланк оба числа записываются через пробел: 18 19360.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
# Читаем файл: по одному числу в строке.
a = [int(line) for line in open('17.txt')]
# Сначала — порог. Его надо найти по ВСЕЙ последовательности,
# до того как начнём разбирать пары.
m = max(x for x in a if x % 5 == 0)
count = 0
best = 0
for i in range(len(a) - 1): # пар на одну меньше, чем чисел
x, y = a[i], a[i + 1]
if (x % 5 == 0 and y % 5 == 0) and x + y > m:
count += 1
if x + y > best:
best = x + y
print(count, best)Где обычно теряют балл
- Считать порог не по всей последовательности, а по уже отобранным парам — тогда он получится меньше и пар найдётся больше.
- Перебирать пары как a[i] и a[i+2] или считать парой любые два элемента: в условии пара — именно СОСЕДНИЕ элементы.
- Выйти за границу списка: цикл должен заканчиваться на len(a) − 1, иначе a[i+1] обратится к несуществующему элементу.
17.txt — переименуйте или поправьте строку с open(...).Прочитать файл
Файл — это просто числа по строкам. Считываем их в список целых:a = [int(s) for s in open('17.txt')]. Преобразование вintобязательно: иначе сравнения будут строковыми и «9» окажется больше «100».Найти порог
Порог — максимального элемента последовательности, кратного 3. Его считают по всей последовательности один раз, до перебора пар. Здесь он равен 9978.Перебрать пары
Пара — соседние элементы, поэтому индекс i идёт от 0 до len(a) − 2, а сама пара это a[i] и a[i+1]. Для каждой пары проверяем оба условия сразу.Ответ
Подходящих пар 213, наибольшая сумма среди них — 19112. В бланк оба числа записываются через пробел: 213 19112.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
# Читаем файл: по одному числу в строке.
a = [int(line) for line in open('17.txt')]
# Сначала — порог. Его надо найти по ВСЕЙ последовательности,
# до того как начнём разбирать пары.
m = max(x for x in a if x % 3 == 0)
count = 0
best = 0
for i in range(len(a) - 1): # пар на одну меньше, чем чисел
x, y = a[i], a[i + 1]
if ((x % 3 == 0) != (y % 3 == 0)) and x + y > m:
count += 1
if x + y > best:
best = x + y
print(count, best)Где обычно теряют балл
- Считать порог не по всей последовательности, а по уже отобранным парам — тогда он получится меньше и пар найдётся больше.
- Перебирать пары как a[i] и a[i+2] или считать парой любые два элемента: в условии пара — именно СОСЕДНИЕ элементы.
- Выйти за границу списка: цикл должен заканчиваться на len(a) − 1, иначе a[i+1] обратится к несуществующему элементу.
17.txt — переименуйте или поправьте строку с open(...).Прочитать файл
Файл — это просто числа по строкам. Считываем их в список целых:a = [int(s) for s in open('17.txt')]. Преобразование вintобязательно: иначе сравнения будут строковыми и «9» окажется больше «100».Найти порог
Порог — максимального элемента последовательности, кратного 9. Его считают по всей последовательности один раз, до перебора пар. Здесь он равен 9963.Перебрать пары
Пара — соседние элементы, поэтому индекс i идёт от 0 до len(a) − 2, а сама пара это a[i] и a[i+1]. Для каждой пары проверяем оба условия сразу.Ответ
Подходящих пар 55, наибольшая сумма среди них — 18450. В бланк оба числа записываются через пробел: 55 18450.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
# Читаем файл: по одному числу в строке.
a = [int(line) for line in open('17.txt')]
# Сначала — порог. Его надо найти по ВСЕЙ последовательности,
# до того как начнём разбирать пары.
m = max(x for x in a if x % 9 == 0)
count = 0
best = 0
for i in range(len(a) - 1): # пар на одну меньше, чем чисел
x, y = a[i], a[i + 1]
if ((x + y) % 9 == 0) and x + y > m:
count += 1
if x + y > best:
best = x + y
print(count, best)Где обычно теряют балл
- Считать порог не по всей последовательности, а по уже отобранным парам — тогда он получится меньше и пар найдётся больше.
- Перебирать пары как a[i] и a[i+2] или считать парой любые два элемента: в условии пара — именно СОСЕДНИЕ элементы.
- Выйти за границу списка: цикл должен заканчиваться на len(a) − 1, иначе a[i+1] обратится к несуществующему элементу.
17.txt — переименуйте или поправьте строку с open(...).Прочитать файл
Файл — это просто числа по строкам. Считываем их в список целых:a = [int(s) for s in open('17.txt')]. Преобразование вintобязательно: иначе сравнения будут строковыми и «9» окажется больше «100».Найти порог
Порог — максимального элемента последовательности, оканчивающегося цифрой 4. Его считают по всей последовательности один раз, до перебора пар. Здесь он равен 9974.Перебрать пары
Пара — соседние элементы, поэтому индекс i идёт от 0 до len(a) − 2, а сама пара это a[i] и a[i+1]. Для каждой пары проверяем оба условия сразу.Ответ
Подходящих пар 94, наибольшая сумма среди них — 18963. В бланк оба числа записываются через пробел: 94 18963.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
# Читаем файл: по одному числу в строке.
a = [int(line) for line in open('17.txt')]
# Сначала — порог. Его надо найти по ВСЕЙ последовательности,
# до того как начнём разбирать пары.
m = max(x for x in a if x % 10 == 4)
count = 0
best = 0
for i in range(len(a) - 1): # пар на одну меньше, чем чисел
x, y = a[i], a[i + 1]
if (x % 10 == 4 or y % 10 == 4) and x + y > m:
count += 1
if x + y > best:
best = x + y
print(count, best)Где обычно теряют балл
- Считать порог не по всей последовательности, а по уже отобранным парам — тогда он получится меньше и пар найдётся больше.
- Перебирать пары как a[i] и a[i+2] или считать парой любые два элемента: в условии пара — именно СОСЕДНИЕ элементы.
- Выйти за границу списка: цикл должен заканчиваться на len(a) − 1, иначе a[i+1] обратится к несуществующему элементу.
Обработка числовой последовательности
Файл читается в список целых чисел одной строкой:
a = [int(s) for s in open('17.txt')]. Преобразование в
int обязательно — иначе сравнения будут строковыми.
Дальше почти всегда нужны две вещи: порог, который считается по всей последовательности заранее, и перебор пар. Пара — это два подряд идущих элемента, то есть a[i] и a[i+1], а цикл идёт до len(a) − 1.
Ответ этого номера — два числа: количество и максимум. Копите их в двух переменных за один проход.
Где теряют балл. Считают порог по уже отобранным парам; понимают под парой любые два элемента; выходят за границу списка.
Где эта тема разобрана подробно
Структура раздела и темы заданий соответствуют кодификатору и спецификации ФИПИ. Задания и файлы данных составлены редакцией reknow.ru. План варианта приведён по проекту спецификации и демоверсии ФИПИ 2027 года. После публикации утверждённой версии информация будет обновлена.