题目描述
译自 ROI Regional 2019 Day2 T2. Интервальные тренировки
体育学院开发了一种新的间歇训练方法。根据这种方法,运动员每天都要训练,但负荷的增加和减少必须交替进行。
训练计划由一组正整数 a1,a2,…,am 组成,其中 ai 描述了运动员在第 i 天的训练负荷。任何两个相邻的天数必须有不同的负荷:ai=ai+1。为了使负荷的增加和减少交替进行,对于 i 从 1 到 m−2,必须满足以下条件:如果 ai<ai+1,则 ai+1>ai+2;如果 ai>ai+1,则 ai+1<ai+2。
在整个训练计划中,总负荷必须为 n,即 a1+a2+…+am=n。计划的天数没有限制,m 可以是任意值,但第一天的负荷是固定的:a1=k。
在测试新方法之前,学院管理层想知道有多少不同的训练计划符合上述要求。
编写一个程序,根据给定的 n 和 k,确定有多少不同的训练计划符合上述要求,并输出这些计划数量除以 109+7 的余数。
输入格式
输入的第一行包含两个整数 n 和 k (1≤n≤5000,1≤k≤n)。
输出格式
输出一个整数:符合要求的训练计划数量除以 109+7 的余数。
6 2
4
在第一个样例中,符合要求的计划有:[2,1,2,1],[2,1,3],[2,3,1],[2,4]。
3 3
1
在第二个样例中,唯一符合要求的计划是 [3]。
数据范围与提示
详细子任务附加限制及分值如下表所示。
| 子任务 |
分值 |
附加限制 |
子任务依赖 |
| 1 |
23 |
1≤n≤10 |
|
| 2 |
20 |
1≤n≤30 |
1 |
| 3 |
23 |
1≤n≤500 |
1,2 |
| 4 |
34 |
1≤n≤5000 |
1,2,3 |