Ctrl K

Строки из диапазона без запретного слова

Сложная
Даны число length, две строки low и high длины length и строка banned. Все строки состоят из строчных латинских букв. Назовём строку *чистой*, если: - её длина равна length; - в словарном (лексикографическом) порядке она не меньше low и не больше high; - banned не встречается в ней как подстрока (непрерывный кусок). Посчитайте, сколько существует чистых строк. Ответ может быть огромным, поэтому верните его по модулю 10⁹ + 7.
Пример 1
length=2, low="ax", high="cb", banned="b" → 4

На a подходят ax, ay, az (3 строки). На b все строки содержат b. На c — только ca, потому что cb содержит b. Итого 4.

Пример 2
length=4, low="tram", high="trap", banned="ra" → 0

Все строки диапазона начинаются с tra, то есть содержат ra. Ответ 0.

Пример 3
length=3, low="aaa", high="zzz", banned="qq" → 17525
Ограничения
  • 1 ≤ length ≤ 500
  • len(low) == len(high) == length
  • low ≤ high
  • 1 ≤ len(banned) ≤ 50
  • Все строки состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСнимаем повторяющееся начало СложнаяХвост вперёд СложнаяФраза из начал слов: длинная версия СложнаяСамая длинная серия повторов ЛёгкаяЦель из начал слов Средняя
загружаем Python…
Вход
length=2, low="ax", high="cb", banned="b"
Ожидается
4

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 23 теста на сервере, включая скрытые.