M - Rotate 2x2
Earlgray
2
s
1024
MB
100
点
問題文
., # からなる長さ $W$ の文字列 $S_1,S_2,\ldots ,S_H$ が与えられます。$S_i$ の $j$ 番目の文字を $S_{i,j}$ で表します。
$H$ 行 $W$ 列のマス目があります。上から $i$ 行目、左から $j$ 列目のマスをマス $(i,j)$ と呼ぶことにします。各マス $(i,j)$ について、そのマスには整数 $(i-1)\times W + j$ が書かれたチップが $1$ つ置かれています。以降、あなたは次の手順からなる操作を $0$ 回以上の好きな回数行えます。
- 以下の条件をすべて満たす整数の組 $(i,j)$ を選ぶ。
- $1 \leq i \leq H-1$
- $1 \leq j \leq W-1$
- $S_{i,j}=S_{i,j+1}=S_{i+1,j}=S_{i+1,j+1}=$
.
- 選んだ $(i,j)$ を左上とする $2 \times 2$ の部分にある $4$ つのチップを、時計回りに $90$ 度回転するように移動する。正確には、次の $4$ つの移動を同時に行う。
- マス $(i,j)$ にあるチップをマス $(i,j+1)$ に移動する。
- マス $(i,j+1)$ にあるチップをマス $(i+1,j+1)$ に移動する。
- マス $(i+1,j+1)$ にあるチップをマス $(i+1,j)$ に移動する。
- マス $(i+1,j)$ にあるチップをマス $(i,j)$ に移動する。
最終的なマス目の状態としてありうるものの個数を $998244353$ で割った余りを計算してください。ただし、 $2$ つのマス目の状態が異なるとされるのは、あるマス $(i,j)$ に置かれているチップに書かれている整数の値が異なる場合です。
ツール
ビジュアライザを以下のURLで公開しています。
https://brief.mathenachia.blog/media/kyoprocamp2026west/91vle46cg2t4slx0.html
制約
- $2 \leq H \leq 500$
- $2 \leq W \leq 500$
- $H$ 、 $W$ は整数
- $S_i$ は
.,#からなる長さ $W$ の文字列
部分点
- $H = 2$ を満たすデータセットに正解した場合は $50$ 点が与えられる。
入力
入力は以下の形式で標準入力から与えられる。
$H$ $W$
$S _ 1$
$S _ 2$
$\vdots$
$S _ H$
出力
答えを $1$ 行で出力せよ。
入力例 1
4 4
####
#..#
#..#
####
出力例 1
4
中央の $4$ つのチップ(それぞれ $6,7,10,11$ が書かれたチップ)を移動させる操作のみ行えます。
$4$ 回操作すると元に戻るので、最終的な状態としてあり得るものは $4$ 通りあります。
入力例 2
3 4
.#.#
#...
..#.
出力例 2
1
どのチップも移動できません。あり得る最終状態は、初期状態と同じもののみの $1$ 通りです。
入力例 3
7 55
.#...#.####...####.####..####...###...####..###..#...#.
.#...#.#...#.#.....#...#.#...#.#...#.#.....#...#.##..#.
.#...#.#...#.#.....#...#.#...#.#...#.#.....#...#.#.#.#.
.#...#.####..#.....####..####..#...#.#.....#...#.#..##.
..#.#..#.#...#.....#.....#.#...#...#.#.....#...#.#...#.
..#.#..#..#..#.....#.....#..#..#...#.#.....#...#.#...#.
...#...#...#..####.#.....#...#..###...####..###..#...#.
出力例 3
957485951
$998244353$ で割ったあまりを答えることに注意してください。
入力例 4
13 59
...........................................................
#...#.#...#..###..####..####...###...####..###..#...#.####.
#..#...#.#..#...#.#...#.#...#.#...#.#.....#...#.##.##.#...#
###.....#...#...#.####..####..#...#.#.....#####.#.#.#.####.
#..#....#...#...#.#.....#..#..#...#.#.....#...#.#...#.#....
#...#...#....###..#.....#...#..###...####.#...#.#...#.#....
...........................................................
.......###...###...###...###..#...#.#####..####.#####......
......#...#.#..##.#...#.#.....#.#.#.#.....#.......#........
.........#..#.#.#....#..####..#.#.#.####...###....#........
.......##...##..#..##...#...#.#.#.#.#.........#...#........
......#####..###..#####..###...#.#..#####.####....#........
...........................................................
出力例 4
991896486