#arc136f. [arc136_f]Flip Cells
[arc136_f]Flip Cells
问题描述
我们有一个 行 列的棋盘,每个方格上写着 0
或 1
。棋盘的当前状态由 个字符串 表示: 的第 个字符表示位于从上往下数第 行、从左往右数第 列的方格上的数字。
Snuke 将重复执行以下操作。
- 均匀地随机选择一个方格。然后,翻转该方格上的数字(即将
0
变为1
,将1
变为0
)。
他特别喜欢一个整数序列 ,所以他会在满足以下条件时终止操作。
- 对于每个 (),从上往下数第 行恰好包含 个
1
。
特别地,他可以不进行任何操作。
求 Snuke 执行的操作次数的期望值,对 取模。
期望值取模 的定义
可以证明所求的期望值总是一个有理数。此外,在问题的约束条件下,当该值表示为不可约分数 时,也可以证明 。因此,存在一个唯一的整数 ,使得 $R \\times Q \\equiv P \\pmod{998244353}, 0 \\leq R < 998244353$。求出这个 。
约束条件
- 是长度为 的由
0
和1
组成的字符串。
输入
输入以标准输入给出,格式如下:
输出
输出答案。
示例输入 1
1 2
01
0
示例输出 1
3
操作过程如下。
- 以概率 ,翻转一个数字为
1
的方格。第一行现在不再包含1
,操作终止。 - 以概率 ,翻转一个数字为
0
的方格。第一行现在包含两个1
,操作继续。- 任意选择一个方格进行翻转。无论翻转哪个方格,第一行现在包含一个
1
,操作继续。- 以概率 ,翻转一个数字为
1
的方格。第一行现在不再包含1
,操作终止。 - 以概率 ,翻转一个数字为
0
的方格。第一行现在包含两个1
,操作继续。
- 以概率 ,翻转一个数字为
- 任意选择一个方格进行翻转。无论翻转哪个方格,第一行现在包含一个
操作次数的期望值为 。
示例输入 2
3 3
000
100
110
0 1 2
示例输出 2
0
示例输入 3
2 2
00
01
1 0
示例输出 3
332748127
示例输入 4
5 4
1101
0000
0010
0100
1111
1 3 3 2 1
示例输出 4
647836743