JOI 2011 - JOI Flag

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2300 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Ủy ban Olympic Tin học Nhật Bản quyết định làm những lá cờ lấy cảm hứng từ biểu trưng JOI để quảng bá cho kỳ thi Olympic Tin học Nhật Bản (JOI) năm nay. Mỗi lá cờ phải là một “lá cờ tốt”.

Yêu cầu

Một “lá cờ tốt” là một hình chữ nhật gồm \(M\) hàng và \(N\) cột, mỗi vị trí chứa một trong ba chữ cái J, O, I, đồng thời có ít nhất một vị trí mà ba chữ cái J, O, I được sắp xếp như hình dưới đây: O ở ngay bên phải J, và I ở ngay bên dưới chính chữ J đó.

Hình dưới đây cho hai ví dụ về “lá cờ tốt”.

Hình dưới đây cho hai ví dụ về những lá cờ không phải là “lá cờ tốt”.

Hiện tại, các giá trị \(M\), \(N\) đã được xác định và một số vị trí trên lá cờ đã được ấn định chữ cái J, O hoặc I. Cho những thông tin này, hãy viết chương trình đếm số “lá cờ tốt” có thể tạo ra và in phần dư của số đó khi chia cho \(100\,000 = 10^5\).

Dữ liệu vào

Dữ liệu gồm \(1+M\) dòng:

  • Dòng \(1\) chứa hai số nguyên \(M\)\(N\), cách nhau bởi một dấu cách, biểu thị kích thước lá cờ.
  • Dòng \(1+i\) (\(1 \le i \le M\)) chứa một xâu gồm \(N\) ký tự. Mỗi ký tự là J, O, I hoặc ?. Nếu ký tự thứ \(j\) (\(1 \le j \le N\)) là J, O hoặc I, vị trí ở hàng \(i\), cột \(j\) đã được ấn định chữ cái tương ứng. Nếu ký tự đó là ?, chữ cái ở vị trí này chưa được xác định.

Dữ liệu ra

In ra một dòng chứa phần dư của số “lá cờ tốt” có thể tạo ra khi chia cho \(100\,000 = 10^5\).

Ràng buộc

  • \(2 \le M \le 20\).
  • \(2 \le N \le 20\).
  • Mỗi xâu mô tả một hàng có đúng \(N\) ký tự, chỉ gồm J, O, I, ?.

Ví dụ

Ví dụ 1

Input
2 3
??O
IIJ
Output
4
Giải thích

\(4\) “lá cờ tốt” như hình dưới đây.

Ví dụ 2

Input
2 2
??
??
Output
3

Ví dụ 3

Input
3 3
??I
???
O?J
Output
53

Ví dụ 4

Input
5 4
JOI?
????
????
????
?JOI
Output
28218
Giải thích

\(2\,428\,218\) “lá cờ tốt”. Phần dư khi chia số này cho \(100\,000 = 10^5\)\(28\,218\), nên in ra 28218.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: