Bật dãy máy tính
Đề bài
Mô tả
Có máy tính xếp thành một hàng, đánh số từ đến . Ban đầu tất cả đều đang tắt, và bạn muốn bật tất cả chúng.
Bạn bật các máy bằng tay, mỗi lần một máy. Tại bất kỳ thời điểm nào, nếu máy và máy đều đang bật thì máy (với ) sẽ tự động bật nếu nó chưa bật. Bạn không được bật bằng tay một máy đã tự động bật.
Nếu chỉ xét dãy các máy được bật bằng tay, hỏi có bao nhiêu cách để bật hết tất cả các máy? Hai dãy được coi là khác nhau nếu tập hợp các máy được bật bằng tay khác nhau, hoặc thứ tự bật bằng tay khác nhau.
Vì kết quả có thể rất lớn, hãy in ra phần dư của nó khi chia cho .
Dữ liệu vào
Một dòng duy nhất chứa hai số nguyên và : số lượng máy tính và số chia lấy dư.
Dữ liệu ra
In ra một số nguyên duy nhất: số cách bật tất cả các máy tính, lấy phần dư khi chia cho .
Ràng buộc
- , và là số nguyên tố
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 100000007 | 6 | Sáu dãy bật bằng tay là: , , , , , . Với dãy , sau khi bật máy rồi máy thì máy tự động bật, nên nó không xuất hiện trong dãy. |
| 4 100000007 | 20 | Chẳng hạn hợp lệ: bật , bật , bật , khi đó máy tự động bật. Còn không hợp lệ vì sau khi bật , , thì máy đã tự bật, không thể bật tay nữa. |
| 400 234567899 | 20914007 | Trường hợp lớn nhất. |
Bình luận