Hang động
Nộp bài giải
Điểm:
8,00 (OI)
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
Ada, Algol, Assembly, Awk, C, C#, C++, D, Dart, Forth, Fortran, Go, Groovy, Java, Javascript, Kotlin, Lisp, Lua, Nim, ObjC, Pascal, Perl, PHP, Pike, Python, Racket, Ruby, Rust, Scheme, Scratch, Sed, TCL, Typescript, V, Zig
Cho lưới gồm các ô đen hoặc trắng (các hàng đánh số từ trên xuống, các cột đánh số từ trái sang phải). Lưới được gọi là một "hang động" nếu thỏa mãn đồng thời hai điều kiện sau:
- Tồn tại một đoạn hàng () sao cho mỗi hàng trong có đúng hai ô đen, còn tất cả các hàng khác toàn ô trắng.
- Tồn tại một hàng () sao cho:
- Với mọi : khoảng cột nằm giữa hai ô đen của hàng (bao gồm cả hai ô đen) là tập con của khoảng cột tương ứng của hàng .
- Với mọi : khoảng cột giữa hai ô đen của hàng (bao gồm cả hai ô đen) là tập con của khoảng cột tương ứng của hàng .
Nói cách khác, các khoảng cột giữa hai ô đen phình to dần từ hàng xuống hàng , rồi thu nhỏ dần từ hàng xuống hàng .
Đếm số cách tô hang động trên lưới . Hai cách tô được coi là khác nhau nếu có ít nhất một ô có màu khác nhau giữa chúng. In ra kết quả lấy theo modulo .
Dữ liệu vào
Một dòng chứa hai số nguyên và .
Dữ liệu ra
Một dòng duy nhất: số cách tô hang động lấy theo modulo .
Ràng buộc
- .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 5 | 451 | Lưới có 451 cách tô hang động hợp lệ. |
| 1 1 | 0 | Mỗi hàng của hang động cần đúng 2 ô đen nhưng lưới chỉ có 1 cột. |
| 4 4 | 485 | Lưới có 485 cách. |
Bình luận