Festival
Xem dạng PDF
Gửi bài giải
Điểm:
0,01 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
512M
Input:
stdin
Output:
stdout
Tác giả:
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
Assembly, AWK, C, C++, C++20, Go, Java, Kotlin, Pascal, Perl, PyPy, Python, Rust, Scratch, SED, Text
Khi đang làm việc tại lễ hội sô-cô-la năm nay, Ivan được sếp giao cho ~n~ viên kẹo sô-cô-la khác nhau và yêu cầu chuẩn bị ~k~ hộp quà từ chúng. Trước khi bắt đầu xếp hộp, Ivan muốn biết có bao nhiêu cách sắp xếp khác nhau, rồi sau đó mới chọn phương án đẹp nhất.
Lễ hội rất quan trọng nên mọi hộp kẹo phải được sắp thật chỉn chu. Cụ thể, Ivan phải tuân theo các quy tắc sau:
- Mỗi hộp phải chứa ít nhất ~1~ viên kẹo.
- Mỗi viên kẹo thuộc đúng ~1~ hộp.
- Các hộp là giống hệt nhau, nên nếu chỉ đổi chỗ hai hộp thì không tạo ra cách sắp xếp mới. Điều quan trọng là viên nào nằm trong hộp nào và thứ tự các viên trong từng hộp.
- Trong mỗi hộp, viên kẹo lớn nhất luôn đứng ở vị trí đầu tiên. Có thể giả sử rằng trong mọi nhóm kẹo, viên lớn nhất luôn được xác định duy nhất.
Hãy tính số cách khác nhau để Ivan sắp xếp các hộp kẹo. Vì kết quả có thể rất lớn, hãy in ra đáp án theo modulo ~10^9 + 7~.
Input
Dòng duy nhất chứa hai số nguyên dương ~n~ và ~k~, với ~1 \le n \le 5000~ và ~1 \le k \le n~.
Output
In ra trên dòng duy nhất một số nguyên: số cách sắp xếp các hộp kẹo theo modulo ~10^9 + 7~.
Chấm điểm
- Subtask ~1~ (~8~ điểm): ~k = 1~
- Subtask ~2~ (~19~ điểm): ~k = 2~
- Subtask ~3~ (~14~ điểm): ~n \le 10~
- Subtask ~4~ (~29~ điểm): Không có ràng buộc bổ sung.
Sample Input ~1~
3 1
Sample Output ~1~
2
Sample Input ~2~
3 2
Sample Output ~2~
3
Sample Input ~3~
4 2
Sample Output ~3~
11
Giải thích
- Ví dụ ~1~: Gọi ba viên kẹo theo thứ tự tăng dần kích thước là ~1~, ~2~, ~3~. Vì chỉ có ~1~ hộp nên cả ba viên đều phải nằm chung trong hộp đó. Viên ~3~ phải đứng đầu vì nó lớn nhất. Hai viên còn lại có thể được sắp theo ~2~ cách, nên chỉ có ~[3, 1, 2]~ và ~[3, 2, 1]~ là hợp lệ.
- Ví dụ ~2~: Vẫn ký hiệu các viên kẹo là ~1~, ~2~, ~3~ theo thứ tự tăng dần kích thước. Có đúng ~3~ cách xếp: ~\{[1], [3, 2]\}~, ~\{[2], [3, 1]\}~, và ~\{[3], [2, 1]\}~.
Bình luận