Ctrl K

Цепочки делителей

Сложная
Назовём массив arr длины length **цепочкой**, если: - каждый элемент — целое число от 1 до max_value; - каждый следующий элемент делится на предыдущий: arr[i] % arr[i - 1] == 0 для всех 0 < i < length. Сколько существует различных цепочек? Ответ может быть огромным — верните его по модулю 10⁹ + 7.
Пример 1
length=3, max_value=4 → 13

С единицы начинаются 8 цепочек: [1,1,1], [1,1,2], [1,1,3], [1,1,4], [1,2,2], [1,2,4], [1,3,3], [1,4,4]. С двойки — 3: [2,2,2], [2,2,4], [2,4,4]. С тройки и четвёрки — по одной постоянной. Итого 8 + 3 + 1 + 1 = 13.

Пример 2
length=4, max_value=1 → 1

Единственное возможное значение — 1, так что подходит только [1, 1, 1, 1].

Пример 3
length=2, max_value=6 → 14
Ограничения
  • 2 ≤ length ≤ 10⁴
  • 1 ≤ max_value ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДегустаторы и испорченная бочка СложнаяЭфир без частых повторов СложнаяПорядок развоза посылок СложнаяЧестный раздел цветных бусин СложнаяДругие порядки для того же дерева поиска Сложная
загружаем Python…
Вход
length=3, max_value=4
Ожидается
13

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