#P17429. PM15896 骨牌铺放
PM15896 骨牌铺放
题目描述
对于每个正整数 ,你都有无限多个大小为 的骨牌。每块骨牌既可以横放,也可以竖放。
现在有一个矩形棋盘,其中一些格子已经被 的骨牌覆盖,其余格子为空。你需要使用上述骨牌将所有空格恰好覆盖。
一个覆盖方案是合法的,当且仅当每个格子恰好被一块骨牌覆盖,并且所有骨牌都完全位于棋盘内部。
如果两个覆盖方案中,存在两个格子 ,使得恰好只有一个方案中有同一块骨牌同时覆盖 ,则认为这两个方案不同。
求不同合法覆盖方案的数量,对 取模。
输入格式
第一行一个整数 ,表示棋盘的行数。
接下来 行,每行一个仅由 . 和 # 组成的字符串,表示棋盘:
.表示空格;#表示该格已经被覆盖,不能再放置骨牌。
所有字符串长度相同,记列数为 。
输出格式
输出一个整数,表示不同合法覆盖方案数量对 取模后的结果。
数据范围
- ;
- 输入字符串只包含
.和#。
样例 1
1
..
2
样例 2
2
.#
..
3
样例 3
3
.#.
#..
...
20