CF1545B AquaMoon and Chess

题目描述

你有一个长为 $n$ 的棋盘,这个棋盘上有一些棋子,你可以进行如下操作: 如果第 $i + 2$ 个位置是空的,且第 $i + 1$ 个位置非空,则可以将第 $i$ 个位置的棋子挪到第 $i + 2$ 个位置 ($i + 2 \leq n$). 如果第 $i - 2$ 个位置是空的,且第 $i - 1$ 个位置非空,则可以将第 $i$ 个位置的棋子挪到第 $i - 2$ 个位置 ($i - 2 \geq 1$). 现在将给出一个棋盘的初始状态,求可以通过上述操作可以到达的状态数,你可以进行任意次操作,答案对 $998244353$ 取模.

输入格式

第一行一个整数 $t(1 \leq t \leq 10000)$ 代表数据组数. 每组数据第一行一个整数 $n(1 \leq n \leq 10^5)$ 代表棋盘大小. 第二行一个长度为 $n$ 的 $01$ 串,第 $i$ 个位置为 $0$ 代表没有棋子,为 $1$ 代表有棋子.

输出格式

对于每组数据,输出方案数,对 $998244353$ 取模.

说明/提示

In the first test case the strings "1100", "0110" and "0011" are reachable from the initial state with some sequence of operations.