题目描述
给定整数 N,P。
有一个 N 个顶点 N 条边的图,顶点编号为 1 到 N。第 i 条边连接顶点 i 和顶点 i+1,是双向的。这里顶点 N+1 代表顶点 1。
请执行以下算法,得到一个长度为 N 的数列 D=(D1,D2,…,DN)。
-
令长度为 N 的整数列 D=(D1,…,DN)=(−1,…,−1)。同时,令数对序列 Q=((1,0))。只要 Q 非空,重复以下操作:
- 取出 Q 的首元素 (v,d),并将其从 Q 中删除。
- 如果 Dv=−1,则令 Dv:=d,并对与顶点 v 相邻且满足 Dx=−1 的每个顶点 x,按顶点编号从小到大依次进行如下操作:
- 以概率 100P,将 (x,d+1) 加入 Q 的首部。
- 若未将 (x,d+1) 加入 Q 的首部,则将其加入 Q 的尾部。
最终得到的 D 的所有元素之和的期望值,模 998244353 后输出。
给定 T 组测试数据,请分别输出每组的答案。
期望值 mod 998244353 的定义:可以证明,所求期望值一定是有理数。在本题的约束下,若将其表示为最简分数 QP,则 Q 保证不被 998244353 整除。此时,唯一存在一个 0 到 998244352 之间的整数 R 满足 R×Q≡P(mod998244353)。请输出这个 R 作为答案。
输入格式
输入按以下格式从标准输入给出。
T
case1
⋮
caseT
每组数据格式如下:
N P
输出格式
输出 T 行,第 i 行输出第 i 组测试数据的答案。
样例 1
输入
3
3 50
4 1
1000000000000000000 70
输出
499122179
595552585
760296751
说明/提示
数据范围
- 1≤T≤104
- 3≤N≤1018
- 1≤P≤99
- 输入的所有数均为整数
样例解释 1
对于第 1 组测试数据,算法的执行过程例如如下:
- 初始时,D=(−1,−1,−1), Q=((1,0))。取出 Q 首元素 (1,0)。
- 因为 D1=−1,令 D1:=0。与顶点 1 相邻且 Dx=−1 的顶点为 2,3。
- 将 (2,1) 加入 Q 首部,将 (3,1) 加入 Q 尾部。此时 Q=((2,1),(3,1))。
- 取出 Q 首元素 (2,1)。
- 因为 D2=−1,令 D2:=1。与顶点 2 相邻且 Dx=−1 的顶点为 3。
- 将 (3,2) 加入 Q 首部。此时 Q=((3,2),(3,1))。
- 取出 Q 首元素 (3,2)。
- 因为 D3=−1,令 D3:=2。与顶点 3 相邻且 Dx=−1 的顶点不存在,不做任何操作。
- 取出 Q 首元素 (3,1)。
- 因为 D3=2,不做任何操作。
- Q 为空,算法结束。
此时最终 D=(0,1,2)。上述过程发生的概率为 81,D 的元素和的期望值为 25。
由 ChatGPT 4.1 翻译