| Codeforces Round 1106 (Div. 2) |
|---|
| Закончено |
Вы руководите масштабным научным проектом по исследованию необычной функции. Для его реализации вы наняли $$$10^{10^{100}}$$$ студентов и пронумеровали их натуральными числами от $$$1$$$ до $$$10^{10^{100}}$$$. Студенты образуют иерархию:
До завершения работы осталось $$$n$$$ дней. Каждый день состоит из двух этапов:
Дополнительное ограничение: Каждый студент должен быть уволен (непосредственно или косвенно) не более одного раза. Если уволенный ранее студент будет снова нанят, нельзя производить увольнение, которое приведет к увольнению этого студента.
Ниже (показаны только первые $$$15$$$ студентов) показаны способы выбрать студентов для непосредственного увольнения в каждый из дней так, чтобы после $$$2$$$-х дней осталось ровно $$$5$$$ студентов. Номер на вершине соответствует номеру студента, ребра показывают подчинения между студентами.
Студенты, которые работают и не были уволены помечены зелёным цветом, студенты, которые были уволены помечены белым цветом, а студенты, которые уже были уволены но были наняты повторно — красным.
$$$1$$$-й день, до увольнения. Все студенты наняты.
$$$1$$$-й день, после увольнения. Уволены студенты $$$2$$$, $$$6$$$, $$$7$$$
$$$2$$$-й день, до увольнения. Наняты студенты $$$2$$$, $$$6$$$, $$$7$$$. Обратите внимание, что на этапе увольнения $$$3$$$-й студент не может быть непосредственно уволен, так как это приведёт к увольнению $$$6$$$-го и $$$7$$$-го студентов, которые уже были уволены до этого момента. Ваша цель — сделать так, чтобы ровно через $$$n$$$ дней в проекте осталось ровно $$$k$$$ работающих студентов. При этом необходимо минимизировать суммарное количество непосредственных увольнений за весь период.
Найдите количество способов выбрать студентов для непосредственного увольнения в каждый из дней так, чтобы итоговое количество работающих студентов было равно $$$k$$$, а общее число непосредственных увольнений было минимально возможным. Ответ выведите по модулю $$$10^9 + 7$$$.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^5$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
В первой строке каждого набора входных данных содержится два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le n \le 10^9$$$, $$$1 \le k \le 2 \cdot 10^5$$$) — количество дней и требуемое конечное количество активных студентов.
Для каждого набора входных данных выведите одно целое число — количество возможных способов выбрать увольнения в каждый день так, чтобы после $$$n$$$ дней осталось ровно $$$k$$$ студентов, при условии, что общее количество увольнений минимально возможное.
61 12 53 41 520 141000000000 20
1224212012
В первом наборе входных данных $$$1$$$ вариант: в первый день непосредственно уволить студентов с номерами $$$2$$$ и $$$3$$$. Останется ровно один студент с номером $$$1$$$.
Во втором наборе входных данных $$$2$$$ возможных способа:
В третьем наборе входных данных $$$2$$$ возможных способа:
| Название |
|---|


