Tìm kiếm kho báu
Đề bài
Mô tả
Dante cùng nhóm bạn chơi trò chơi truy tìm kho báu. Bản đồ kho báu dẫn Dante đến một đầm lầy, theo đúng như bản đồ thì để tìm được kho báu thì Dante phải đi qua đầm lầy, biết rằng qua đầm lầy có một cây cầu gỗ gồm nhịp. Các nhịp cầu được đánh số từ đến từ trái qua phải. Dante có thể bước một bước, hoặc bước hai bước. Tuy nhiên một số nhịp cầu đã bị thủng do cũ kỹ và Dante không thể bước chân lên được. Dante đứng ở một bên đầu cầu và muốn biết có bao nhiêu cách để qua cầu. Dante nhờ bạn lập trình trả lời câu hỏi trên.
Cụ thể, ban đầu Dante đứng ở đầu cầu bên trái (coi là vị trí , ngay trước nhịp ). Mỗi bước, Dante đi từ vị trí đến vị trí (bước một bước) hoặc (bước hai bước, bỏ qua nhịp dù nhịp đó có bị thủng hay không), và không được đặt chân lên nhịp bị thủng. Dante qua được cầu khi đứng trên nhịp thứ . Hai cách được coi là khác nhau nếu dãy các vị trí Dante đặt chân lên khác nhau.
Yêu cầu: Tính số cách để Dante qua cầu, kết quả lấy dư cho .
Dữ liệu vào
- Dòng đầu tiên gồm số nguyên và , là số nhịp của cây cầu và số nhịp cầu bị hỏng.
- Dòng thứ hai gồm số nguyên cho biết chỉ số của các nhịp cầu bị hỏng theo thứ tự tăng dần (dòng này rỗng nếu ).
Dữ liệu ra
In ra phần dư của số cách Dante qua cầu khi chia cho .
Ràng buộc
- .
- Chỉ số các nhịp hỏng nằm trong đoạn và tăng ngặt.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 2 2 3 |
0 | Từ vị trí chỉ đến được nhịp ; từ nhịp không thể bước lên nhịp hay nhịp vì cả hai đều thủng. |
| 90000 1 49000 |
19072359 | |
| 1 0 |
1 | Chỉ có một cách: bước một bước lên nhịp . |
| 3 1 3 |
0 | Nhịp cuối cùng (nhịp ) bị thủng nên Dante không thể đứng trên nhịp . |
| 2 1 1 |
1 | Dante bước hai bước từ đầu cầu thẳng lên nhịp , bỏ qua nhịp bị thủng. |
Bình luận