K - Kid
Dữ liệu vào: standard input
Dữ liệu ra: standard output
Giới hạn thời gian: 2.0 giây
Giới hạn bộ nhớ: 256 megabyte
Đăng bởi: ami

Thầy giáo CàiWinDạo có việc làm thêm là trông trẻ (kid). Hiện tại, thầy giáo đang trông n đứa trẻ. Những đứa trẻ còn nhỏ và vô cùng nghịch ngợm. N đứa trẻ hoàn toàn có thể làm thầy giáo sợ đến phát khóc. Vì thế, thầy giáo sẽ chia n đứa trẻ này thành các nhóm, mỗi nhóm có đúng k hoặc k+1 đứa trẻ, để đảm bảo chúng không ăn hiếp thầy. Các bạn cần tính xem, thầy CàiWinDạo có bao nhiêu cách chia. Hai cách chia nhóm được xem là khác nhau nếu tồn tại một nhóm ở cách chia này khác với tất cả các nhóm của cách chia còn lại. Ví dụ cách chia (1) (2 3) (4) khác (2 1) (3) (4), trong khi (1) (2 3) (4) giống (4) (1) (3 2).

Dữ liệu vào

Gồm 2 số nguyên dương n và k là số trẻ và số trẻ trong một nhóm (1 <= n <= 100000, 1 <= k <= 20).

Dữ liệu ra

Số cách chia nhóm khác nhau. Vì số cách chia có thể rất lớn nên các bạn hãy in ra số dư của nó khi chia cho 10^9 + 7.

 

Ví dụ

 

Input 1

3 1

Output 1

4

Giải thích

Các cách chia là |(1) (2 3)| , |(1 2)  (3)| , |(1 3)  (2)| , |(1)  (2)  (3)|

Input 2

3 2

Output 2

1

Input 3

6 2

Output 3

25

Back to Top