Ctrl K

Длина разросшегося слова

Сложная
Дано слово word из строчных латинских букв, число раундов rounds и массив spans из 26 чисел — по одному на каждую букву от a до z. За один раунд каждая буква слова одновременно заменяется на spans[i] букв, идущих в алфавите сразу за ней (здесь i — номер буквы, a имеет номер 0). Алфавит закольцован: после z снова идёт a. Например, если spans для буквы x равно 4, то x превращается в yzab. Верните длину слова после ровно rounds раундов. Ответ может быть огромным, поэтому верните его по модулю 10⁹ + 7.
Пример 1
word='az', rounds=2, spans=[2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3] → 6

После первого раунда a превращается в bc, а z — в abc: получаем bcabc. Во втором раунде каждая из b и c даёт одну букву, а a — две: cd + bc + cd = cdbccd, длина 6.

Пример 2
word='m', rounds=3, spans=[25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25] → 15625

Каждая буква за раунд превращается в 25 букв, поэтому после трёх раундов длина равна 25³ = 15625.

Пример 3
word='hello', rounds=1, spans=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] → 5
Ограничения
  • 1 ≤ len(word) ≤ 10⁵
  • word состоит только из строчных латинских букв
  • 1 ≤ rounds ≤ 10⁹
  • len(spans) = 26
  • 1 ≤ spans[i] ≤ 25
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРастущая строка СредняяУравнять частоты букв СложнаяКуски с одинаковыми краями СредняяСообщения за нажатиями СредняяРовные куски строки Средняя
загружаем Python…
Вход
word='az', rounds=2, spans=[2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3]
Ожидается
6

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