#P5004. 专心OI - 跳房子

    ID: 3978 Type: RemoteJudge 1000ms 125MiB Tried: 0 Accepted: 0 Difficulty: 5 Uploaded By: Tags>数学矩阵加速,矩阵优化构造

专心OI - 跳房子

题目背景

Imakf 有一天参加了 PINO2017 PJ 组,他突然看见最后一道题:

他十分蒟蒻,写不出来。

而如今他还是一个蒟蒻,他又看见一道题:

他还是写不出来,于是便来请教您。

题目描述

您有 NN 个格子,排成一行,从左往右编号为 1,2,,N1,2,\cdots,N。您站在 11 号格子的左边无限远,开始从左往右跳,跳到 NN 号格子右侧为止。由于您是一位成功的 OIer,您自然长得很胖,所以您的腿部力量也非常大!这使得您跳一次,当前格子到目标格子中间必须至少空出来 MM 格,但您可以跳无数格远!

您认为这么跳太没意思了,于是便想计算出有多少种方案可以跳完全程。由于方案可能过多,您会输出方案数量模 (109+7)(10^9+7) 的值

方案不同当且仅当经过的任一一个格子编号不同。

输入格式

第一行两个整数 N,MN,M

输出格式

一个整数,表示跳完全程的方案模 (109+7)(10^9+7)

5 1 

13

6 2 

13

提示

测试数据编号 NN MM
1,21,2 10\leq10 =1=1
3,43,4 107\leq10^7
5,65,6 106\leq10^6 =2=2
7,87,8 105\leq10^5 =3=3
9,109,10 104\leq10^4 =5=5
11,1211,12 1012\leq10^{12} =1=1
13,1413,14 1018\leq10^{18} =10=10
152015\sim20 =15=15

对于 100%100\% 的数据,满足 1N10181 \le N \le 10^{18}