ЕГЭ по информатике · задание 17

Последовательность в файле: пары и тройки

В файле — последовательность чисел. Нужно найти пары или тройки соседних элементов, удовлетворяющие условиям, и вывести их количество и максимальную или минимальную сумму. К каждому варианту — файл.

Шаблон решения

  • Прочитать числа в список: a = [int(x) for x in open('file.txt')].
  • Сначала посчитать «глобальное» значение (минимум, максимум) по всему списку.
  • Перебрать i от 0 до len(a) − 2 (для троек — до len(a) − 3).

Проверки

  • Двузначное: 10 <= abs(x) <= 99.
  • Оканчивается на 7: abs(x) % 10 == 7 (для отрицательных — только через abs).
  • «Только один» — счётчик подходящих элементов равен 1.

Типичные ошибки

  • x % 10 для отрицательного x в Python даёт не последнюю цифру.
  • Выйти за конец списка при переборе троек.
  • Перепутать «только один» и «хотя бы один».

Разобранные варианты

Сначала напиши программу сам, потом открой разбор.

Вариант 1

пары · двузначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых только один из элементов является двузначным числом, а сумма элементов пары кратна минимальному двузначному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Файл к варианту: Ege17_v1.txt (5000 чисел, по одному в строке).

Разбор

Шаг 1. Значение для сравнения. Сначала один раз проходим по всей последовательности: минимальный двузначный элемент — 10.

Шаг 2. Перебор пар. Для каждого i берём элементы a[i]…a[i + 1], считаем, сколько из них двузначные, и проверяем сумму.

Итог: 177 пар, наибольшая сумма 99570.

Ответ: 177 99570

Решение на Python. Положите файл варианта рядом с программой.

a = [int(x) for x in open('Ege17_v1.txt')]
R = min(x for x in a if 10 <= abs(x) <= 99)
count = 0
best = -10 ** 9
for i in range(len(a) - 1):
    g = a[i:i + 2]
    c = sum(1 for x in g if 10 <= abs(x) <= 99)
    s = sum(g)
    if c == 1 and s % R == 0:
        count += 1
        best = max(best, s)
print(count, best)

Вариант 2

пары · трёхзначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых хотя бы один из элементов является трёхзначным числом, а сумма элементов пары больше максимального элемента последовательности, оканчивающегося на 3. В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Файл к варианту: Ege17_v2.txt (5000 чисел, по одному в строке).

Разбор

Шаг 1. Значение для сравнения. Сначала один раз проходим по всей последовательности: максимальный элемент, оканчивающийся на 3 — 99983.

Шаг 2. Перебор пар. Для каждого i берём элементы a[i]…a[i + 1], считаем, сколько из них трёхзначные, и проверяем сумму.

Итог: 5 пар, наименьшая сумма 100016.

Ответ: 5 100016

Решение на Python. Положите файл варианта рядом с программой.

a = [int(x) for x in open('Ege17_v2.txt')]
R = max(x for x in a if abs(x) % 10 == 3)
count = 0
best = 10 ** 9
for i in range(len(a) - 1):
    g = a[i:i + 2]
    c = sum(1 for x in g if 100 <= abs(x) <= 999)
    s = sum(g)
    if c >= 1 and s > R:
        count += 1
        best = min(best, s)
print(count, best)

Вариант 3

тройки · двузначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество троек последовательности, в которых только один из элементов является двузначным числом, а сумма элементов тройки кратна минимальному трёхзначному элементу последовательности. В ответе запишите количество найденных троек, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

Файл к варианту: Ege17_v3.txt (10000 чисел, по одному в строке).

Разбор

Шаг 1. Значение для сравнения. Сначала один раз проходим по всей последовательности: минимальный трёхзначный элемент — 100.

Шаг 2. Перебор троек. Для каждого i берём элементы a[i]…a[i + 2], считаем, сколько из них двузначные, и проверяем сумму.

Итог: 25 троек, наибольшая сумма 148300.

Ответ: 25 148300

Решение на Python. Положите файл варианта рядом с программой.

a = [int(x) for x in open('Ege17_v3.txt')]
R = min(x for x in a if 100 <= abs(x) <= 999)
count = 0
best = -10 ** 9
for i in range(len(a) - 2):
    g = a[i:i + 3]
    c = sum(1 for x in g if 10 <= abs(x) <= 99)
    s = sum(g)
    if c == 1 and s % R == 0:
        count += 1
        best = max(best, s)
print(count, best)

Вариант 4

пары · оканчиваются на 7

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от −100 000 до 100 000 включительно. Определите количество пар последовательности, в которых только один из элементов оканчивается на 7, а сумма элементов пары кратна минимальному двузначному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Число считается двузначным (трёхзначным, …) по записи модуля: −45 — двузначное число.

Файл к варианту: Ege17_v4.txt (10000 чисел, по одному в строке).

Разбор

Шаг 1. Значение для сравнения. Сначала один раз проходим по всей последовательности: минимальный двузначный элемент — -99.

Шаг 2. Перебор пар. Для каждого i берём элементы a[i]…a[i + 1], считаем, сколько из них оканчиваются на 7, и проверяем сумму.

Отрицательные числа. В Python −17 % 10 = 3, поэтому последнюю цифру и количество цифр берём у модуля: abs(x).

Итог: 27 пар, наибольшая сумма 129195.

Ответ: 27 129195

Решение на Python. Положите файл варианта рядом с программой.

a = [int(x) for x in open('Ege17_v4.txt')]
R = min(x for x in a if 10 <= abs(x) <= 99)
count = 0
best = -10 ** 9
for i in range(len(a) - 1):
    g = a[i:i + 2]
    c = sum(1 for x in g if abs(x) % 10 == 7)
    s = sum(g)
    if c == 1 and s % R == 0:
        count += 1
        best = max(best, s)
print(count, best)

Вариант 5

пары · четырёхзначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых оба элемента являются четырёхзначными числами, а сумма элементов пары кратна минимальному трёхзначному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Файл к варианту: Ege17_v5.txt (10000 чисел, по одному в строке).

Разбор

Шаг 1. Значение для сравнения. Сначала один раз проходим по всей последовательности: минимальный трёхзначный элемент — 101.

Шаг 2. Перебор пар. Для каждого i берём элементы a[i]…a[i + 1], считаем, сколько из них четырёхзначные, и проверяем сумму.

Итог: 5 пар, наибольшая сумма 14342.

Ответ: 5 14342

Решение на Python. Положите файл варианта рядом с программой.

a = [int(x) for x in open('Ege17_v5.txt')]
R = min(x for x in a if 100 <= abs(x) <= 999)
count = 0
best = -10 ** 9
for i in range(len(a) - 1):
    g = a[i:i + 2]
    c = sum(1 for x in g if 1000 <= abs(x) <= 9999)
    s = sum(g)
    if c == 2 and s % R == 0:
        count += 1
        best = max(best, s)
print(count, best)

Вариант 6

тройки · трёхзначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от −100 000 до 100 000 включительно. Определите количество троек последовательности, в которых хотя бы один из элементов является трёхзначным числом, а сумма элементов тройки кратна минимальному двузначному элементу последовательности. В ответе запишите количество найденных троек, затем минимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности. Число считается двузначным (трёхзначным, …) по записи модуля: −45 — двузначное число.

Файл к варианту: Ege17_v6.txt (8000 чисел, по одному в строке).

Разбор

Шаг 1. Значение для сравнения. Сначала один раз проходим по всей последовательности: минимальный двузначный элемент — -99.

Шаг 2. Перебор троек. Для каждого i берём элементы a[i]…a[i + 2], считаем, сколько из них трёхзначные, и проверяем сумму.

Отрицательные числа. В Python −17 % 10 = 3, поэтому последнюю цифру и количество цифр берём у модуля: abs(x).

Итог: 22 троек, наименьшая сумма -85140.

Ответ: 22 -85140

Решение на Python. Положите файл варианта рядом с программой.

a = [int(x) for x in open('Ege17_v6.txt')]
R = min(x for x in a if 10 <= abs(x) <= 99)
count = 0
best = 10 ** 9
for i in range(len(a) - 2):
    g = a[i:i + 3]
    c = sum(1 for x in g if 100 <= abs(x) <= 999)
    s = sum(g)
    if c >= 1 and s % R == 0:
        count += 1
        best = min(best, s)
print(count, best)

Вариант 7

пары · двузначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от −100 000 до 100 000 включительно. Определите количество пар последовательности, в которых хотя бы один из элементов является двузначным числом, а сумма элементов пары кратна минимальному трёхзначному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Число считается двузначным (трёхзначным, …) по записи модуля: −45 — двузначное число.

Файл к варианту: Ege17_v7.txt (10000 чисел, по одному в строке).

Разбор

Шаг 1. Значение для сравнения. Сначала один раз проходим по всей последовательности: минимальный трёхзначный элемент — -998.

Шаг 2. Перебор пар. Для каждого i берём элементы a[i]…a[i + 1], считаем, сколько из них двузначные, и проверяем сумму.

Отрицательные числа. В Python −17 % 10 = 3, поэтому последнюю цифру и количество цифр берём у модуля: abs(x).

Итог: 6 пар, наибольшая сумма 96806.

Ответ: 6 96806

Решение на Python. Положите файл варианта рядом с программой.

a = [int(x) for x in open('Ege17_v7.txt')]
R = min(x for x in a if 100 <= abs(x) <= 999)
count = 0
best = -10 ** 9
for i in range(len(a) - 1):
    g = a[i:i + 2]
    c = sum(1 for x in g if 10 <= abs(x) <= 99)
    s = sum(g)
    if c >= 1 and s % R == 0:
        count += 1
        best = max(best, s)
print(count, best)

Вариант 8

тройки · оканчиваются на 7

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество троек последовательности, в которых только один из элементов оканчивается на 7, а сумма элементов тройки больше максимального элемента последовательности, оканчивающегося на 3. В ответе запишите количество найденных троек, затем минимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

Файл к варианту: Ege17_v8.txt (8000 чисел, по одному в строке).

Разбор

Шаг 1. Значение для сравнения. Сначала один раз проходим по всей последовательности: максимальный элемент, оканчивающийся на 3 — 99733.

Шаг 2. Перебор троек. Для каждого i берём элементы a[i]…a[i + 2], считаем, сколько из них оканчиваются на 7, и проверяем сумму.

Итог: 809 троек, наименьшая сумма 99772.

Ответ: 809 99772

Решение на Python. Положите файл варианта рядом с программой.

a = [int(x) for x in open('Ege17_v8.txt')]
R = max(x for x in a if abs(x) % 10 == 3)
count = 0
best = 10 ** 9
for i in range(len(a) - 2):
    g = a[i:i + 3]
    c = sum(1 for x in g if abs(x) % 10 == 7)
    s = sum(g)
    if c == 1 and s > R:
        count += 1
        best = min(best, s)
print(count, best)

Вариант 9

пары · трёхзначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых только один из элементов является трёхзначным числом, а сумма элементов пары кратна минимальному двузначному элементу последовательности. В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Файл к варианту: Ege17_v9.txt (8000 чисел, по одному в строке).

Разбор

Шаг 1. Значение для сравнения. Сначала один раз проходим по всей последовательности: минимальный двузначный элемент — 10.

Шаг 2. Перебор пар. Для каждого i берём элементы a[i]…a[i + 1], считаем, сколько из них трёхзначные, и проверяем сумму.

Итог: 153 пар, наименьшая сумма 180.

Ответ: 153 180

Решение на Python. Положите файл варианта рядом с программой.

a = [int(x) for x in open('Ege17_v9.txt')]
R = min(x for x in a if 10 <= abs(x) <= 99)
count = 0
best = 10 ** 9
for i in range(len(a) - 1):
    g = a[i:i + 2]
    c = sum(1 for x in g if 100 <= abs(x) <= 999)
    s = sum(g)
    if c == 1 and s % R == 0:
        count += 1
        best = min(best, s)
print(count, best)

Вариант 10

пары · двузначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых оба элемента являются двузначными числами, а сумма элементов пары кратна минимальному трёхзначному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Файл к варианту: Ege17_v10.txt (10000 чисел, по одному в строке).

Разбор

Шаг 1. Значение для сравнения. Сначала один раз проходим по всей последовательности: минимальный трёхзначный элемент — 100.

Шаг 2. Перебор пар. Для каждого i берём элементы a[i]…a[i + 1], считаем, сколько из них двузначные, и проверяем сумму.

Итог: 6 пар, наибольшая сумма 100.

Ответ: 6 100

Решение на Python. Положите файл варианта рядом с программой.

a = [int(x) for x in open('Ege17_v10.txt')]
R = min(x for x in a if 100 <= abs(x) <= 999)
count = 0
best = -10 ** 9
for i in range(len(a) - 1):
    g = a[i:i + 2]
    c = sum(1 for x in g if 10 <= abs(x) <= 99)
    s = sum(g)
    if c == 2 and s % R == 0:
        count += 1
        best = max(best, s)
print(count, best)

Для самостоятельного решения

Варианты 11–15 без разборов. Ответ можно проверить кнопкой.

Вариант 11

пары · четырёхзначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от −100 000 до 100 000 включительно. Определите количество пар последовательности, в которых только один из элементов является четырёхзначным числом, а сумма элементов пары кратна минимальному двузначному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Число считается двузначным (трёхзначным, …) по записи модуля: −45 — двузначное число.

Файл к варианту: Ege17_v11.txt (5000 чисел, по одному в строке).

Вариант 12

тройки · двузначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество троек последовательности, в которых хотя бы один из элементов является двузначным числом, а сумма элементов тройки больше максимального элемента последовательности, оканчивающегося на 3. В ответе запишите количество найденных троек, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

Файл к варианту: Ege17_v12.txt (8000 чисел, по одному в строке).

Вариант 13

пары · оканчиваются на 7

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых хотя бы один из элементов оканчивается на 7, а сумма элементов пары кратна минимальному трёхзначному элементу последовательности. В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

Файл к варианту: Ege17_v13.txt (8000 чисел, по одному в строке).

Вариант 14

пары · двузначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от −100 000 до 100 000 включительно. Определите количество пар последовательности, в которых только один из элементов является двузначным числом, а сумма элементов пары кратна минимальному трёхзначному элементу последовательности. В ответе запишите количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Число считается двузначным (трёхзначным, …) по записи модуля: −45 — двузначное число.

Файл к варианту: Ege17_v14.txt (10000 чисел, по одному в строке).

Вариант 15

тройки · четырёхзначные

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество троек последовательности, в которых только один из элементов является четырёхзначным числом, а сумма элементов тройки кратна минимальному двузначному элементу последовательности. В ответе запишите количество найденных троек, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

Файл к варианту: Ege17_v15.txt (5000 чисел, по одному в строке).