题目背景
小 Q 是神仙,尤其喜欢多项式。
这天小 K 问了道题:
给定长度 n 的序列 g,h,求 f 满足 fn=k=0∑ngkhn−k。
小 Q 对小 K 说:你这个菜鸡,这不随便卷一下就行了吗,你 FFT 怎么学的了。
然后小 K 花了一个月学习 FFT 和 NTT。又跑过去问小 Q 一道题:
给定长度 n 的序列 g,h,求 f 满足 fn=k=0∑n(kn)gkhn−k。
小 Q 对小 K 说:你这个菜鸡,这不随便卷一下就行了吗,你 FFT 怎么学的了。
然后小 K 又花了一个月学习 FFT 和 NTT。又跑过去问小 Q 一道题:
给定长度 n 的序列 g,h,求 f 满足 fn=k=0∑nkngkhn−k。
小 Q 对小 K 说:你这个菜鸡,这不随便卷一下就行了吗,你 FFT 怎么学的了。
然后他仔细看了一遍,傻眼了,发现他不会这道题。
为了吊打小 K,你需要告诉他 4 个特殊情况的做法。
题目描述
给定特定的序列 g,h,求 fn 满足 fn=k=0∑nkngkhn−k。
本题有五个子任务,前四个子任务给定不同形式的 g,h,需要求出 fn,第五个子任务不依赖于这个等式,但是形式上与此相似。
注意,本题所有输出请对 998244353(119×223+1,一个质数)取模。
Subtask 1(4 pts):
给定一个 n,你需要回答 q 组询问,每组询问给定一个整数 m。
每组询问的 g 和 h 如下所示(0≤k≤n):
gk={1,0,k<mk≥m
hk=1
你需要回答出 fn 的值。
Subtask 2,3(16,16 pts):
这两个子任务给定的序列 g,h 形式相同,但数据范围不同,请仔细阅读数据范围。
你需要回答 q 组询问,每组询问给定两个整数 n,m。
每组询问的 g 和 h 如下所示(0≤k≤n):
gk=(k+m+1)!1
hk={0,(k−m)!(−1)k−m,k<mk≥m你需要回答出 fn 的值。
Subtask 4(32 pts):
你需要回答 q 组询问,每组询问给定两个整数 n,m。
每组询问的 g 和 h 如下所示(0≤k≤n):
gk=k!km
hk=k!(−1)k
你需要回答出 fn 的值。
Subtask 5(32 pts):
你需要回答 q 组询问,每组询问给定两个整数 n,m。
注意下面 n,m 的含义,不要看反。
k=0∑m(k+1)m(k+1)!(k+1)n+1i=0∑m−k(m−k−i)!(k+1)i(i2n+1)(−1)m−k你需要回答出上面这个式子的值。
与前四个 Subtask 相似之处是,求和的一开始是幂的形式。
输入格式
第一行一个整数 op,表示子任务编号。
若 op=1:
第二行一个整数 n,第三行一个整数 q;
接下来 q 行,每行一个整数 m。
若 op∈{2,3,4,5}:
第二行一个整数 q;
接下来 q 行:每行两个整数 n,m。
所有变量含义见题目描述。
输出格式
对于每组询问,一行一个整数,表示答案。
提示
样例解释 1
在这组样例中,需要解决第一个子任务,n=5, q=2。
第一组询问中,m=2,则(省略了 0 的加数项):
[g0 g1 g2 g3 g4 g5]=[1 1 0 0 0 0][h0 h1 h2 h3 h4 h5]=[1 1 1 1 1 1]f5=15×g1h4=1
第二组询问中,m=3,则:
[g0 g1 g2 g3 g4 g5]=[1 1 1 0 0 0][h0 h1 h2 h3 h4 h5]=[1 1 1 1 1 1]f5=15×g1h4+25×g2h3=33
样例解释 2
在这组样例中,需要解决第二个子任务,q=2。
第一组询问中,n=4, m=2,则:
[g0 g1 g2 g3 g4]=[61 241 1201 7201 50401][h0 h1 h2 h3 h4]=[0 0 1 −1 21]f5=14×g1h3+24×g2h2=12011f5=12011 对 998244353 取模后等于 440891256。
第二组询问范围过大,不进行样例解释。
样例解释 3
在这组样例中,需要解决第四个子任务,q=2。
第一组询问中,n=4, m=2,则:
[g0 g1 g2 g3 g4]=[0 1 2 23 32][h0 h1 h2 h3 h4]=[1 −1 21 −61 241]f5=14×g1h3+24×g2h2+34×g3h1+44×g4h0=65第二组询问范围过大,不进行样例解释。
样例解释 4
在这组样例中,需要解决第五个子任务,q=2。
第一组询问中,n=4, m=2,则枚举 k,i:
k=0, i=0: (k+1)m(k+1)!(k+1)n+1(m−k−i)!(k+1)i(i2n+1)(−1)m−k=21k=0, i=1: (k+1)m(k+1)!(k+1)n+1(m−k−i)!(k+1)i(i2n+1)(−1)m−k=9k=0, i=2: (k+1)m(k+1)!(k+1)n+1(m−k−i)!(k+1)i(i2n+1)(−1)m−k=36k=1, i=0: (k+1)m(k+1)!(k+1)n+1(m−k−i)!(k+1)i(i2n+1)(−1)m−k=−64k=1 i=1: (k+1)m(k+1)!(k+1)n+1(m−k−i)!(k+1)i(i2n+1)(−1)m−k=−288k=2 i=0: (k+1)m(k+1)!(k+1)n+1(m−k−i)!(k+1)i(i2n+1)(−1)m−k=2729全部相加,结果为 58。
第二组询问范围过大,不进行样例解释。
数据范围
本题采用捆绑测试,不同 Subtask 的题意不同。
子任务编号 |
q≤ |
n≤ |
m≤ |
分值 |
1 |
5×105 |
105 |
min(105,n) |
4 |
2 |
2×105 |
20 |
16 |
3 |
20 |
998244352 |
4(31-40) |
5×105 |
2×105 |
10 |
32 |
4(51-60) |
20 |
10105 |
5 |
5×105 |
2×103 |
所有输入均为正整数。