Ctrl K

Нарезка на узорные палиндромы

Сложная
Назовём строку длины m **узорным палиндромом**, если найдётся шаг d, такой что 1 ≤ d < m и m делится на d, и при этом каждая из d групп букв — с позиций r, r + d, r + 2d, … для r = 0, 1, …, d − 1 — читается одинаково слева направо и справа налево. Например, "xyxy" — узорный палиндром с шагом 2 (группы "xx" и "yy"). Строка из одной буквы узорным палиндромом не бывает: подходящего шага для неё нет. Дана строка text и число parts. Разрежьте text ровно на parts непустых кусков подряд и замените в них как можно меньше букв так, чтобы каждый кусок стал узорным палиндромом. Верните это наименьшее число замен.
Пример 1
text="pqpzz", parts=2 → 0

Режем на "pqp" и "zz": оба куска — обычные палиндромы (шаг 1), менять ничего не нужно.

Пример 2
text="xyxy", parts=1 → 0

Сама строка не палиндром, но с шагом 2 группы — "xx" и "yy", обе палиндромы.

Пример 3
text="abcd", parts=2 → 2

Единственный способ — "ab" и "cd"; в каждом куске длины 2 подходит только шаг 1, и нужна одна замена буквы. Итого 2.

Ограничения
  • 2 ≤ len(text) ≤ 200
  • 1 ≤ parts ≤ len(text) / 2
  • text состоит из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЗеркальная нарезка строки СложнаяНепересекающиеся длинные палиндромы СложнаяСамый длинный зеркальный кусок СредняяСлово, спрятанное в тексте ЛёгкаяСколько кусков-палиндромов в строке Средняя
загружаем Python…
Вход
text="pqpzz", parts=2
Ожидается
0

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