#P7431. [THUPC2017] 小 L 的计算题

    ID: 6525 Type: RemoteJudge 3000ms 500MiB Tried: 0 Accepted: 0 Difficulty: 6 Uploaded By: Tags>2017分治快速傅里叶变换 FFT快速数论变换 NTTTHUPC

[THUPC2017] 小 L 的计算题

题目描述

现有一个长度为 nn 的非负整数数组 {ai}\{a_i\} 。小 L 定义了一种神奇变换:

fk=(i=1naik)mod998244353f_k=\left(\sum_{i=1}^na_i^k\right)\bmod 998244353

小 L 计划用变换生成的序列 ff 做一些有趣的事情,但是他并不擅长算乘法,所以来找你帮忙,希望你能帮他尽快计算出 f1nf_{1\dots n}

输入格式

输入包含多组数据。

输入的第一行包含一个整数 TT , 表示数据组数。

接下来 2T2T 行,每两行代表一组测试数据。

每组数据的第一行包含一个整数 nn,表示数组 {ai}\{a_i\} 的长度。接下来一行 nn 个整数,描述数组 {ai}\{a_i\}

保证输入的 aia_i 满足 0ai1090\le a_i\le10^9。在一个测试文件中,保证有 n4×105\sum n\le 4\times 10^5

输出格式

我们不想让你输出过多的数。因此,令 ans=i=1nfians=\bigoplus_{i=1}^{n}f_i,其中 \bigoplus 表示异或操作,在 C++ / Java / Python 中,它可以表示为 ^

对每组数据,你需要输出一行一个整数,表示 ansans

2
3
2 3 3
5
1 2 3 4 5
32
4675

提示

对于 100%100\% 的数据,0ai1090\le a_i\le10^91n2×1051\le n\le 2\times 10^5n4×105\sum n\le 4\times 10^5

版权信息

来自 THUPC(THU Programming Contest,清华大学程序设计竞赛)2017。