Контест Middle Лямбды и функциональные объекты обновлено

Рекурсивная лямбда с мемоизацией: разбиения числа

Условие

Сколькими способами можно представить n в виде суммы натуральных слагаемых, каждое не больше k? Порядок слагаемых не важен (2 + 1 и 1 + 2 один способ). Для n = 0 ответ 1 (пустая сумма). Ответ по модулю 10⁹ + 7.

Напишите решение рекурсивной лямбдой с мемоизацией в таблице, захваченной по ссылке.

Ввод: q (1 ≤ q ≤ 2000), затем q пар n k (0 ≤ n ≤ 500, 1 ≤ k ≤ 500).

Вывод: q строк с ответами.

Пример 1

Ввод:

4
4 4
4 2
0 7
5 1

Вывод:

5
3
1
1

Пример 2

Ввод:

2
1 1
10 3

Вывод:

1
14

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.