#P6582. 座位调查
座位调查
题目背景
ION 2048 结束了,但 ℲƆƆ 发现,一个机房里发生了性质恶劣的作弊事件。
题目描述
Youyou 奉命来到该机房进行调查。已知该机房是一个 的矩阵,每个位置是 O
或 X
,其中 O
表示该位置是座位,X
表示该位置是空地。每个座位上都必须坐有学生,当然,至少有一个座位。
要想查明作弊的学生,Youyou 必须知道这个机房中的考生有多少种座位的可能。ION 2048 有来自 个学校的考生参加,且座位满足以下要求:
- 考场中的座位是由若干长条形组成的,这样方便管理;
- 任意考生不可能和来自同学校的考生座位相邻,可以避免交流。
两个座位是相邻的当且仅当它们有一条公共边。
条形定义为除了两个端点只有一个相邻的座位外,每个座位都恰好有两个相邻座位,当然,一个座位也属于条形的。
例如,下面的都是「条形的座位」。
下面的都不是「条形的座位」。
注:方格中的数字表示与其相邻的座位的个数。
试求出合法的座位方案总数,由于结果可能很大,请输出结果对质数 取模的结果。如果这个机房本身就不可能是 ION 2048 的考试机房,答案应当是 。
输入格式
第一行三个正整数, 和 。
接下来 行,每行 个字符,表示机房的情况。保证只有 O
,X
两种字符,且 O
至少出现一次。
输出格式
一行一个整数,表示结果对质数 取模的结果。
2 3 2
OOX
XXO
4
2 3 3
XOX
XOO
12
2 3 4
XOO
XOO
0
提示
样例 1 解释
可能有以下 种情况,红色代表学校 的学生,蓝色代表学校 的学生:
样例 2 解释
可能有以下 种情况,红色代表学校 的学生,蓝色代表学校 的学生,黄色代表学校 的学生:
样例 3 解释
机房不是条形安排的,所以答案为 。
数据规模与约定
- Subtask 1(10 分):,;
- Subtask 2(15 分):,;
- Subtask 3(15 分):;
- Subtask 4(20 分):保证座位设置是条形的,;
- Subtask 5(20 分):保证座位设置是条形的;
- Subtask 6(20 分):无特殊限制。
对于全部的数据,,。