Hội thi Tin học trẻ được tổ chức hàng năm và đã thu hút được sự quan tâm của cả nước. Đề thi ngày càng phong phú và đa dạng là do sự đóng góp ý tưởng từ rất nhiều nhà khoa học và các tổ chức công nghệ. Đến nay, ngân hàng đề thi có tổng cộng ~n~ bài, các bài được đánh số từ ~1~ tới ~n~, bài thứ ~i~ có độ khó là ~i~. Để xây dựng đề thi năm nay, Ban giáo khảo muốn chọn ~k~ bài khác nhau từ ngân hàng đề thi mà tổng độ khó của ~k~ bài đúng bằng ~n~. Để khảo sát tính đa dạng của đề thi, Ban giám khảo muốn tính số cách xây dựng đề thi khác nhau (hai đề thi được gọi là khác nhau nếu có một bài được chọn trong đề thứ nhất nhưng không được chọn trong đề thứ hai).
Yêu cầu:
Cho ~n~ và ~k~, hãy giúp Ban giám khảo tính số cách xây dựng đề thi khác nhau. Vì kết quả có thể rất lớn nên chỉ cần đưa ra số dư của phép chia kết quả tìm được cho ~(10^9 + 7)~.
Input
- Gồm hai số nguyên dương ~n~ và ~k~.
Output
- Gồm một số nguyên duy nhất là số dư của phép chia kết quả tìm được cho ~(10^9 + 7)~.
Ràng buộc:
- Có 20% số lượng test ứng với 20% số điểm có ~n \leq 100~ và ~k \leq 5~
- Có 20% số lượng test khác ứng với 20% số điểm có ~n \leq 10^6~ và ~k \leq 5~
- Có 20% số lượng test khác ứng với 20% số điểm có ~n \leq 10^9~ và ~k \leq 2~
- Có 20% số lượng test khác ứng với 20% số điểm có ~n \leq 10^9~ và ~k \leq 3~
- Có 20% số lượng test còn lại ứng với 20% số điểm có ~n \leq 10^9~ và ~k \leq 5~
Sample Input
10 3
Sample Output
4
Giải thích
Có 4 cách tạo một đề thi gồm 3 bài mà tổng độ khó bằng 10 được liệt kê dưới đây.
1 + 2 + 7 = 10
1 + 3 + 6 = 10
1 + 4 + 5 = 10
2 + 3 + 5 = 10
Nguồn: Trại đông Bảo Lộc 2021 - Thầy Đỗ Đức Đông
Comments