Ctrl K

Сообщения за нажатиями

Средняя
На кнопочном телефоне буквы закреплены за цифрами: | Клавиша | Буквы | |---|---| | 2 | abc | | 3 | def | | 4 | ghi | | 5 | jkl | | 6 | mno | | 7 | pqrs | | 8 | tuv | | 9 | wxyz | Чтобы набрать букву, клавишу нажимают столько раз, каким по счёту буква стоит на ней: «a» — одно нажатие на 2, «c» — три нажатия на 2, «s» — четыре нажатия на 7. Клавиши 0 и 1 не используются. До получателя дошли только нажатия без пауз — строка presses. Например, слово «bob» превращается в "2266622". Верните, сколько разных сообщений могли дать такую строку. Ответ может быть большим — верните его по модулю 10⁹ + 7.
Пример 1
presses='4433' → 4

«44» — это «gg» или «h», «33» — «dd» или «e». Всего 2 · 2 = 4 сообщения: «ggdd», «gge», «hdd», «he».

Пример 2
presses='7777' → 8

На клавише 7 четыре буквы, поэтому четыре нажатия могут быть и одной буквой «s». Разбиений 4 = 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2, 1+3, 3+1, 4 — всего 8.

Пример 3
presses='2' → 1
Ограничения
  • 1 ≤ len(presses) ≤ 10⁵
  • presses состоит только из цифр от 2 до 9
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРастущая строка СредняяДлина разросшегося слова СложнаяЧисло римскими цифрами СредняяРазбиение на слова из словаря СредняяЗапись дроби десятичной Средняя
загружаем Python…
Вход
presses='4433'
Ожидается
4

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