Ctrl K

Самые весомые выборки разных букв

Сложная
Дана строка text из строчных латинских букв и число size. Вес буквы — сколько раз она встречается во всей строке text. Выберем в строке size позиций так, чтобы все буквы на них были разными. Вес такой выборки — сумма весов выбранных букв. Выборки считаются разными, если различаются наборы позиций, даже если получается одна и та же строка. Среди всех таких выборок найдите максимальный вес и верните, сколько выборок имеют именно этот вес. Ответ может быть большим — верните его по модулю 10⁹ + 7. Если выбрать size разных букв невозможно, верните 0.
Пример 1
text="xyyz", size=2 → 4

Частоты: x — 1, y — 2, z — 1. Самый большой вес 3 дают пары букв x+y и y+z. Каждую y можно взять двумя способами, поэтому выборок 2 + 2 = 4.

Пример 2
text="moon", size=3 → 2

Буквы m, o, n берутся все; вес 1 + 2 + 1 = 4, а o можно взять из двух позиций — ответ 2.

Пример 3
text="aaa", size=2 → 0

В строке только одна различная буква, двух разных не набрать — ответ 0.

Ограничения
  • 1 ≤ len(text) ≤ 2·10⁵
  • 1 ≤ size ≤ len(text)
  • text состоит только из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОдинаковые буквы на расстоянии СложнаяУпрощение многочлена с буквами СложнаяСловесная дуэль СложнаяСбалансированные отрезки строки СложнаяНаибольший палиндром, кратный числу Сложная
загружаем Python…
Вход
text="xyyz", size=2
Ожидается
4

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