Числовая последовательность является одной из фундаментальных конструкций как в математике, так и в информатике. В алгоритмическом контексте последовательность выступает как упорядоченный набор значений, индексируемых натуральными числами или позициями в памяти. Именно через последовательности формализуются входные данные многих задач: массивы, ряды измерений, результаты вычислений, логи операций, сигналы во времени, цепочки состояний и промежуточные результаты алгоритмов.
Для школьной информатики и подготовки к ЕГЭ тема числовых последовательностей имеет особое значение, поскольку она соединяет сразу несколько содержательных линий: переменные и циклы, массивы, рекуррентные вычисления, инварианты, арифметические и геометрические закономерности, однопроходные алгоритмы обработки данных, а также оценку сложности.
С методологической точки зрения последовательность интересна тем, что может быть задана разными способами: формулой общего члена, рекуррентным соотношением, алгоритмом генерации, таблицей значений или правилами отбора. Каждая из этих форм требует своей техники анализа и программной реализации. В практических задачах необходимо уметь находить отдельные члены, суммы, максимум, минимум, число элементов с заданным свойством, определять монотонность, периодичность, ограниченность, а также разрабатывать алгоритмы, работающие эффективно по времени и памяти.
Ниже дан подробный академический разбор темы: от строгой формальной модели числовой последовательности до инженерных правил её обработки, типичных ошибок и пяти практических упражнений, ориентированных на формат ЕГЭ по информатике.
Определение последовательности
Числовая последовательность — это функция вида
a: N → X,
где N — множество натуральных индексов, а X — множество числовых значений (обычно Z, Q или R).
Иначе говоря, каждому натуральному номеру n сопоставляется число a_n. Запись:
(a_n)_{n=1}^{∞}
означает последовательность, элементы которой упорядочены по индексу.
В информатике часто рассматриваются конечные последовательности, которые можно трактовать как отображение:
a: {1, 2, ..., n} → X.
Такая последовательность совпадает по смыслу с массивом длины n, если индексация начинается с единицы.
Последовательность как упорядоченность
Принципиальное свойство последовательности состоит в том, что одинаковый набор чисел, записанный в разном порядке, образует разные последовательности. Например:
(1, 2, 3) ≠ (3, 2, 1)
как последовательности, хотя как множества их элементы совпадают.
Следовательно, последовательность — это не просто набор значений, а структурированный объект, в котором значима позиция каждого элемента.
Конечные и бесконечные последовательности
Различают:
конечные последовательности, содержащие фиксированное число членов;
бесконечные последовательности, определённые для всех натуральных индексов.
В задачах ЕГЭ по информатике чаще всего встречаются конечные последовательности, поскольку они пригодны для алгоритмической обработки за конечное время. Однако рекуррентные и формульные описания могут задавать и бесконечные объекты, из которых требуется вычислить только первые n членов.
Явная формула общего члена
Последовательность может быть задана функцией индекса:
a_n = f(n).
Примеры:
a_n = 2n + 1
a_n = n^2 − 3n + 5
a_n = (−1)^n
Преимущество такого задания в том, что любой член можно вычислить независимо от предыдущих.
Рекуррентное соотношение
Последовательность может задаваться через предыдущие значения:
a_n = g(a_{n−1}, a_{n−2}, ..., n).
Примеры:
a_1 = 1, a_n = a_{n−1} + 3
a_1 = 1, a_2 = 1, a_n = a_{n−1} + a_{n−2}
Такой способ особенно важен для информатики, потому что естественно переводится в циклы, рекурсию и динамическое программирование.
Алгоритмическое задание
Иногда последовательность задаётся не формулой, а процедурой:
ввод x
пока x ≠ 0:
вывести x
x ← x div 2
В этом случае члены последовательности возникают как результат работы алгоритма. Такой способ задания типичен для задач на обработку входных данных и генерацию серий.
Табличное задание
Последовательность может быть представлена как конечная таблица значений:
a1, a2, a3, ..., an
Это типичный случай работы с массивами, когда значения уже заданы и требуется их обработать.
Монотонность
Последовательность называется:
возрастающей, если
a_{n+1} > a_n
неубывающей, если
a_{n+1} ≥ a_n
убывающей, если
a_{n+1} < a_n
невозрастающей, если
a_{n+1} ≤ a_n
В информатике проверка монотонности сводится к последовательному сравнению соседних элементов.
Ограниченность
Последовательность ограничена сверху, если существует число M, такое что:
a_n ≤ M для всех n.
Аналогично определяется ограниченность снизу.
Если обе оценки существуют, последовательность называется просто ограниченной.
Периодичность
Последовательность называется периодической с периодом T, если:
a_{n+T} = a_n для всех допустимых n.
Пример:
1, 0, 1, 0, 1, 0, ...
с периодом 2.
В алгоритмических задачах периодичность часто используется для сокращения вычислений.
Арифметическая и геометрическая закономерность
Арифметическая прогрессия:
a_n = a_1 + (n−1)d
где d — разность.
Геометрическая прогрессия:
a_n = a_1 · q^{n−1}
где q — знаменатель.
Эти частные виды последовательностей особенно важны для задач на формулы, суммы и анализ закономерностей.
Однопроходный анализ
Во многих задачах последовательность обрабатывается за один проход. Типичные вычисляемые характеристики:
сумма элементов;
количество элементов, удовлетворяющих условию;
максимум и минимум;
среднее значение;
число смен знака;
длина серии одинаковых свойств.
Общая идея:
инициализировать агрегаты
для каждого элемента последовательности:
обновить агрегаты
Инвариант цикла
Корректность однопроходной обработки доказывается через инвариант:
после обработки первых k элементов все накопленные переменные содержат правильные характеристики именно этого префикса.
Например, при подсчёте суммы:
S = ∑_{i=1}^{k} a_i
после обработки k элементов.
Префиксные суммы
Для ускорения повторных запросов по отрезкам используют префиксные суммы:
P_0 = 0
P_n = P_{n−1} + a_n
Тогда сумма на отрезке [l..r] вычисляется по формуле:
∑_{i=l}^{r} a_i = P_r − P_{l−1}
Это важнейший алгоритмический приём, часто встречающийся в задачах ЕГЭ.
Рекуррентное вычисление
Если последовательность задана рекуррентно, то для вычисления первых n членов достаточно хранить ограниченное число последних значений. Например, для Фибоначчи:
a_n = a_{n−1} + a_{n−2}
достаточно помнить только два предыдущих элемента.
Алгоритмические схемы работы с последовательностями
Нахождение суммы
S ← 0
для i от 1 до n
S ← S + a_i
Сложность:
O(n)
Нахождение максимума
m ← a_1
для i от 2 до n
если a_i > m то
m ← a_i
Сложность:
O(n)
Подсчёт количества элементов с условием
k ← 0
для i от 1 до n
если a_i > 0 то
k ← k + 1
Проверка монотонности
flag ← true
для i от 1 до n−1
если a_i > a_{i+1} то
flag ← false
Поиск максимальной суммы префикса
S ← 0
best ← −∞
для i от 1 до n
S ← S + a_i
если S > best то
best ← S
Явно фиксировать индексацию.
Последовательность в математике обычно нумеруется с 1, а массивы в некоторых языках программирования — с 0. Это требует особой аккуратности.
Разделять генерацию и обработку.
Если последовательность задаётся формулой или рекуррентно, желательно отделять этап построения от этапа анализа.
Минимизировать память.
Если задача требует только суммы, минимума или счётчика, не нужно хранить всю последовательность.
Учитывать типы данных.
Сумма длинной последовательности может выйти за пределы стандартного целого типа.
Проверять крайние случаи.
Пустая последовательность, последовательность длины 1, последовательность из одинаковых чисел — обязательные тесты.
Фиксировать смысл переменных.
Каждая рабочая переменная должна иметь ясную интерпретацию: S — сумма, cnt — количество, mx — максимум и так далее.
Общая форма
a: {1,2,...,n} → X
Арифметическая прогрессия
a_n = a_1 + (n−1)d
S_n = (a_1 + a_n)n / 2
Геометрическая прогрессия
a_n = a_1 · q^{n−1}
S_n = a_1(q^n − 1)/(q − 1), если q ≠ 1
Префиксные суммы
P_0 = 0
P_n = P_{n−1} + a_n
sum(l, r) = P_r − P_{l−1}
Проверка монотонности
для всех i: a_i ≤ a_{i+1}

Ошибка 1. Смешение индекса и значения
Иногда вместо a_i анализируется i, и наоборот.
Профилактика: всегда различать номер элемента и сам элемент.
Ошибка 2. Неверная инициализация максимума/минимума
Часто максимум инициализируется нулём, что неверно для последовательности из отрицательных чисел.
Профилактика: брать начальное значение равным первому элементу.
Ошибка 3. Пропуск крайних случаев
Последовательность длины 1 или пустая последовательность может нарушить работу алгоритма.
Профилактика: отдельно продумывать базовые случаи.
Ошибка 4. Неверная рекуррентная реализация
При вычислении рекуррентной последовательности можно потерять старые значения из-за неправильного порядка обновления.
Профилактика: использовать временные переменные.
Ошибка 5. Переполнение
При больших n сумма или произведение могут выйти за границы типа.
Профилактика: использовать более широкий тип или заранее анализировать диапазоны.
Тема числовых последовательностей является базовой для многих заданий ЕГЭ, поскольку через неё проверяются:
Последовательности лежат в основе задач:
Таким образом, владение этой темой формирует фундамент алгоритмического мышления.
Упражнение 1. Арифметическая прогрессия
Условие. Дана арифметическая прогрессия:
a_1 = 7, d = 3.
Найдите a_10.
Решение.
Используем формулу:
a_n = a_1 + (n−1)d
Подставим:
a_10 = 7 + (10−1)·3 = 7 + 27 = 34
Ответ: 34.
Упражнение 2. Сумма первых n членов
Условие. Найдите сумму первых 20 членов арифметической прогрессии:
a_1 = 5, d = 2.
Решение.
Сначала найдём a_20:
a_20 = 5 + 19·2 = 43
Теперь сумма:
S_20 = (a_1 + a_20)·20 / 2 = (5 + 43)·10 = 48·10 = 480
Ответ: 480.
Упражнение 3. Однопроходный подсчёт
Условие. В последовательности из n целых чисел требуется найти количество положительных элементов и их сумму.
Решение (псевдокод):
S ← 0
cnt ← 0
для i от 1 до n
если a_i > 0 то
S ← S + a_i
cnt ← cnt + 1
Инвариант: после обработки первых k элементов S и cnt содержат сумму и количество положительных среди первых k членов.
Сложность:
O(n)
Упражнение 4. Проверка неубывания
Условие. Дан массив чисел. Определите, является ли последовательность неубывающей.
Решение (псевдокод):
flag ← true
для i от 1 до n−1
если a_i > a_{i+1} то
flag ← false
Если по завершении flag = true, последовательность неубывающая.
Сложность:
O(n)
Упражнение 5. Префиксные суммы
Условие. Дана последовательность:
2, 4, 1, 7, 3
Найдите сумму элементов с 2-го по 4-й при помощи префиксных сумм.
Решение.
Строим префиксы:
P_0 = 0
P_1 = 2
P_2 = 6
P_3 = 7
P_4 = 14
P_5 = 17
Тогда:
sum(2,4) = P_4 − P_1 = 14 − 2 = 12
Проверка:
4 + 1 + 7 = 12
Ответ: 12.
Если требуется только агрегат (сумма, максимум, количество), обрабатывайте последовательность в один проход.
Если нужно много запросов по отрезкам, используйте префиксные суммы.
Если последовательность рекуррентная, анализируйте, сколько предыдущих значений реально нужно хранить.
При работе с соседними элементами не забывайте, что цикл обычно идёт до n−1.
Всегда тестируйте алгоритм на:
последовательности длины 1;
всех отрицательных числах;
всех одинаковых числах;
чередующихся значениях.
Числовая последовательность в информатике выступает не только как математический объект, но и как одна из базовых форм организации данных и вычислений. Она позволяет описывать как исходные данные, так и динамически порождаемые результаты алгоритмов. Через анализ последовательностей формируются ключевые навыки: работа с циклами, массивами, рекуррентными соотношениями, инвариантами и префиксными структурами.
Для подготовки к ЕГЭ тема числовых последовательностей имеет фундаментальное значение, поскольку именно на ней строится значительная часть задач на обработку данных. Умение формально задавать последовательность, анализировать её свойства и реализовывать эффективные алгоритмы обработки является важнейшим компонентом алгоритмической культуры учащегося.