Число различных подпоследовательностей

Просмотр в формате PDF

Submit solution


Очки: 200
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Problem types
Allowed languages
C++, Python

Лингвист изучает слово и вырезает из него «осколки». Осколок получается, если выбрать несколько символов слова в исходном порядке, возможно пропуская некоторые символы. При этом два осколка считаются одинаковыми, если получающиеся строки совпадают, даже если выбраны разные позиции.

По данному слову определите, сколько различных непустых осколков можно из него вырезать.

Так как ответ может быть очень большим, выведите его по модулю 1000000007.

Входные данные

В единственной строке дано непустое слово из строчных латинских букв длиной не более 2 * 10^5.

Выходные данные

Выведите количество различных непустых осколков по модулю 1000000007.

Ограничения

  • 1 <= |s| <= 2 * 10^5
  • Строка состоит только из строчных латинских букв.
  • Ввод осуществляется через стандартный ввод.
  • Вывод осуществляется через стандартный вывод.

Примеры

Пример 1

Входные данные

abc

Выходные данные

7

Пояснение

У 'abc' различные подпоследовательности: a, b, c, ab, ac, bc, abc — всего 7.

Пример 2

Входные данные

a

Выходные данные

1
Пример 3

Входные данные

ab

Выходные данные

3

Комментарии

Еще нет ни одного комментария.