Модуль: ЕГЭ-2022. Вопрос 27. Обработка последовательности чисел


Задача

1 /11


Количество подпоследовательностей

Теория Нажмите, чтобы прочитать/скрыть


Вопрос 27. Разработка программа обработки числовых последовательностей

Для решения данного вопроса необходимо написать программу для обработки файла, который содержит последовательность чисел. Файл А содержит количество чисел, которое можно обработать грубым перебором. Для решения файла В, переборный алгоритм уже не подходит, потому что будет работать долго и получить овтет, за приемлемое для экзамена время, будет практически не возможно. Поэтому, наша цель научиться писать эффективные алгоритмы для решения таких задач.

Для успешного решения данного задания необходимо:
  • знать основы комбинаторики;
  • знать основы теории чисел;
  • знать динамическое программирование.
 
Последовательность и ее подпоследовательности

Все числа из файла образуют одну последовательность. Подпоследовательность получается из текущей последовательности путем удаления любого числа элементов.

Непрерывная подпоследовательность получается из последовательности путем удаления любого числа элементов либо сначала этой последовательности, либо с конца. 

Количество непрерывных подпоследовательностей, которые начинаются с первого элемента, равно числу элементов всей последовательности.
Считывая очередное число последовательности, мы получаем новую подпоследовательность. Сумма элементов новой подпоследовательности вычисляется путем добавления значения нового элемента к сумме элементов предыдущей подпоследовательности. Количество элементов новой подпоследовательности будет на единицу больше количества элементов предыдущей подпоследовательности.

Например, если s - сумма элементов предыдущей подпоследовательности, а х следующее число последовательности, то сумма элементов новой подпоследовательности вычисляется таким образом s = s + x.

Задача

Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, начинающиеся с первого элемента последовательности. Найдите количество подпоследовательностей, сумма которых кратна K.

Входные данные
В первой строке записаны два числа: количество чисел в последовательности N (1 <= N <= 108) и число (1 <= K <= 100). Далее идет N строк, по одному натуральному числу в строке. Каждое число не превышает 10000.

Выходные данные
Выведите на экран ответ на задачу
 
 
Примеры
Входные данные Выходные данные
1 5 3
33
41
19
22
40
2

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w6414
Python91
Комментарий учителя