решай.ai · шпаргалка

Задание 17: Обработки числовой последовательности

ЕГЭ Информатика

Как выглядит

Типичная формулировка звучит так: «В файле содержится последовательность целых чисел. Элементы последовательности могут принимать значения от −10000-10000 до 1000010000 включительно. Определите и запишите в ответе сначала количество пар элементов, удовлетворяющих условию, затем максимальную из сумм элементов таких пар».

Ключевые параметры, которые меняются от варианта к варианту:

  • диапазон значений чисел (например, от −10000-10000 до 1000010000 или натуральные числа до 1000010000); …

Что нужно знать

  • Делимость числа aa на mm: a mod m=0a \bmod m = 0.
  • Остаток от деления: r=a mod mr = a \bmod m, где 0≤r<m0 \le r < m для натуральных чисел; при проверке на равенство нулю знак числа не важен ни в одном языке программирования.
  • Число пар без повторов из nn элементов: Cn2=n(n−1)2C_n^2 = \dfrac{n(n-1)}{2}.
  • Пара соседних элементов последовательности a1,a2,…,ana_1, a_2, \dots, a_n — это (ai,ai+1)(a_i, a_{i+1}) при i=1,…,n−1i = 1, \dots, n-1; всего таких пар n−1n-1.
  • Логическое «хотя бы одно из двух» — это операция ИЛИ (or), «оба одновременно» — операция И (and).
  • Разность двух чисел чётна тогда и только тогда, когда числа имеют одинаковую чётность: a−b≡0(mod2)  ⟺  a mod 2=b mod 2a - b \equiv 0 \pmod 2 \iff a \bmod 2 = b \bmod 2.
  • Сложность полного перебора всех пар из nn элементов — O(n2)O(n^2); при n=10000n = 10000 это порядка 5⋅1075 \cdot 10^7–10810^8 операций.
  • Числа в файле обычно записаны через пробел или каждое на отдельной строке — язык программирования должен уметь читать оба формата.

Алгоритм

  1. Определить формат входных данных: сколько чисел, в каком диапазоне, как они разделены в файле.
  2. Прочитать все числа в список (массив) или организовать построчное/поточное чтение.
  3. Внимательно выделить тип пары — соседние элементы или произвольные два различных элемента без учёта порядка.
  4. Сформулировать условие на пару в виде логического выражения на языке программирования, точно повторяя формулировку задания (союз «и» — это and, «хотя бы одно» — это or).
  5. Организовать цикл (один — для соседних пар, два вложенных — для произвольных пар), на каждом шаге проверять условие.
  6. При выполнении условия увеличивать счётчик количества пар и сравнивать сумму пары с текущим максимумом, обновляя его при необходимости.
  7. После завершения цикла вывести два числа: количество и максимальную сумму, разделённые пробелом. …

Ловушки

  • Путаница между «соседними» и «произвольными» парами — из-за этого выбирается неверная структура цикла и получается совершенно другой (обычно намного больший) счётчик пар.
  • Учёт пары элемента с самим собой при произвольных парах: внутренний цикл должен начинаться с j = i + 1, а не с j = i, иначе элемент образует пару с собой, что противоречит условию «два различных элемента».
  • Двойной учёт одной и той же пары: если перебирать j от 0 до n-1 без ограничения j > i, каждая пара считается два раза, что искажает и количество, и не влияет на максимум, но портит первое число ответа.
  • Ошибка off-by-one при построении пар соседних элементов: цикл должен идти до n-2 (индекс) или n-1 раз, а не до n-1 включительно, иначе возникнет выход за границы массива. …
reshay.ai/ege/informatika/zadanie-17 — задачи с разборами и тренажёр

Полный гайд и задачи задания 17 →