#P17084. 数组

数组

1009. 数组

题目描述

给定长为 n 的序列 A = (a1, a2, …, an ) 和长为 2w 的数组

H [0 .. 2w − 1]。对于 1 ≤ i ≤ n,定义∑

Ci =

m

1≤b1,b2,…,bm ≤n

k

H [(∑ abj ) mod 2w ] ⋅ (∑[bj = i]) .m

j=1

j=1

其中,外层求和遍历所有 B = (b1, b2, …, bm ) (1 ≤ bj ≤ n),[⋅] 为艾

弗森括号。求 C1, C2, …, Cn 对 998 244 353 取模的结果。

输入格式

第一行输入一个正整数 T (1 ≤ T ≤ 35),表示数据组数。接下来按如下格式输入 T 组数据:第一行输入四个整数 n, w, m, k (1 ≤ n ≤ 5 × 105, 0 ≤ w ≤ 19, 1 ≤

m ≤ 109, 1 ≤ k ≤ 20)。第二行输入 n 个整数表示 A = (a1, a2, ⋯, an ) (0 ≤ ai < 2w )。

第三行输入 2w 个整数表示 H [0 .. 2w − 1] (0 ≤ hi < 2w )。

保证输入数据中 ∑ n, ∑ 2w 均不超过 106。

输出格式

共 T 行,对于每组数据,输出 n 个整数,表示每个数得到的贡献。

样例输入

2
2 2 2 1
0 1
1 1 2 2
4 2 1 1
0 1 2 3
3 3 2 0

样例输出

4 6
3 3 2 0

提示

本题输入输出量较大,建议使用较快速的输入输出方式(如关闭流同步的 cin / cout)。请注意常数因子对程序效率的影响。

来源:官方题面 PDF(2026"钉耙编程"暑期联赛 第1场)