Ctrl K

Куски от простой цифры до составной

Сложная
Дана строка digits из цифр от 1 до 9 и числа pieces и min_len. Простыми будем называть цифры 2, 3, 5 и 7, остальные — непростыми. Строку нужно разрезать ровно на pieces непустых последовательных кусков так, чтобы: - длина каждого куска была не меньше min_len; - каждый кусок начинался с простой цифры и заканчивался непростой. Посчитайте число таких разрезаний. Ответ может быть большим — верните его по модулю 10⁹ + 7.
Пример 1
digits="2738541", pieces=2, min_len=2 → 1

Новый кусок может начаться только с простой цифры, перед которой стоит непростая. Внутри строки такое место одно — перед 5 (перед ней 8). Получается "2738 | 541".

Пример 2
digits="21212121", pieces=3, min_len=2 → 3

Резать можно перед любой двойкой, кроме первой: позиции 2, 4 и 6. Нужно выбрать две из них — 3 способа, и все куски имеют длину не меньше 2.

Пример 3
digits="4235", pieces=1, min_len=1 → 0

Строка начинается с непростой цифры 4, так что ни одно разбиение не подходит.

Ограничения
  • 1 ≤ pieces ≤ len(digits) ≤ 2000
  • 1 ≤ min_len ≤ len(digits)
  • digits состоит из цифр от 1 до 9
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиШаблон с точкой и звёздочкой СложнаяСамый длинный сбалансированный отрезок скобок СложнаяПодходит ли строка под шаблон СложнаяПеретасовка разрезами СложнаяСколькими способами вычеркнуть Сложная
загружаем Python…
Вход
digits="2738541", pieces=2, min_len=2
Ожидается
1

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