Gửi bài giải

Điểm: 1,40 (OI)
Giới hạn thời gian: 3.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
Nguyễn Khánh Việt
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Ngoài sở thích sử dụng dầu ăn để nấu cơm giúp mẹ, Khải còn một sở thích khác mà ít người biết tới, đó là sưu tầm bi. Cũng bởi vậy, sau nhiều năm tìm tòi, nghiên cứu, trấn lột và trao đổi bi với lũ trẻ trong xóm, Khải đã có ~N~ viên bi giống hệt nhau, cả về màu sắc lẫn kích thước. Lo sợ mẹ sẽ quẳng hết bi của mình cho ve chai nên cậu lên kế hoạch để ~N~ viên bi vào ~M~ hộp giống nhau cho mẹ khó tìm, tất nhiên số bi trong các hộp có thể là khác nhau, dẫn tới việc có hộp có đủ ~N~ viên bi, hoặc có hộp không có viên bi nào. Đến khi chia bi vào hộp, cậu bỗng nảy ra một câu hỏi, liệu sẽ có bao nhiêu cách chia ~N~ viên bi giống nhau và ~M~ chiếc hộp. Câu hỏi khó đó khiến cho Khải cả ngày bẩn thẩn bần thần, liên tục giảm cân, học hành sa sút. Khải rất cần tới sự giúp đỡ của bạn, một Vcoder tài năng, để có thể trả lời chính xác số cách chia bi mà cậu ấy đang muốn tính, do kết quả rất lớn mà Khải lại không thể nhớ được những con số lớn nên Khải chỉ cần bạn in ra phần dư của số cách chia bi cho một số nguyên ~K~ cho trước.

Input

Gồm ~3~ số nguyên ~N~, ~M~ và ~K~.

Output

Một dòng duy nhất là số cách chia bi.

Giới hạn

  • Sub ~1~: ~(10~ test) ~n~, ~m \le 300~, ~k \le 10^{9}~.
  • Sub ~2~: ~(10~ test) ~n~, ~m \le 2000~, ~k \le 10^{9}~.
  • Sub ~3~: ~(10~ test) ~n~, ~m \le 10^{5}~, ~k \le 10^{9}~.
  • Sub ~4~: ~(10~ test) ~n~, ~m \le 2 \times 10^{7}~, ~k = 10^{9} + 7~

Sample Input

2 2 1000

Sample Output

3

Note

Có 3 cách chia bi là: ~(2-0), (0-2)~ và ~(1-1)~.


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    TranThienPhuc2657  đã bình luận lúc 21, Tháng 5, 2026, 17:18

    Comment này spoil thuật (Mình sẽ không đề cập tới cách làm chi tiết những sẽ có gợi ý hướng làm cho bài)

    Đây là một bài toán tổng hợp về các kĩ thuật cài đặt tổ hợp

    Ý tưởng giải bài:

    Đây là công thức chia kẹo Euler cơ bản (về chứng minh các bạn có thể lên mạng đọc).

    Công thức cho bài này là ~C^{N + M - 1}_{M - 1} \, \% \, K~

    Lí thuyết về cài đặt các bạn có thể tham khảo ở đây: VNOI Wiki

    Đây là hint cài đặt từng subtask cho bài

    Subtask 1: Mình không biết cách giải chuẩn là như thế nào?

    Subtask 2:

    Sử dụng công thức truy hồi

    Subtask 3:

    Sử dụng định lí Lucas mở rộng kèm với định lí Thặng dư Trung hoa

    Subtask 4:

    Sử dụng định nghĩa