luogu#P12232. 集合幂级数求逆

    ID: 36524 远端评测题 2500ms 512MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>快速沃尔什变换 FWT快速莫比乌斯变换 FMT集合幂级数,子集卷积

集合幂级数求逆

题目描述

给定一个集合幂级数 F(x)F(x),保证 [x]F(x)0[x^{\varnothing}]F(x)\neq 0。定义 xx 的乘法为子集卷积,可以证明存在一个 G(x)G(x) 满足 F(x)G(x)=1F(x)G(x)=1,你需要对 S{1,2,,n}S\subseteq\{1,2,\cdots,n\} 求出 [xS]G(x)[x^S]G(x)998244353998244353 取模后的值。

如果你仍不清楚题意,可以阅读题面最后的提示部分。

输入格式

第一行一个正整数 nn

接下来一行 2n2^n 个非负整数,第 ii 个整数表示 [xS]F(x)[x^S]F(x),其中 aSa\in S 当且仅当 (i1)(i-1) 二进制下从低到高第 aa 位为 11

输出格式

输出行 2n2^n 个非负整数,第 ii 个整数表示 [xS]G(x)[x^S]G(x)998244353998244353 取模后的值,其中 aSa\in S 当且仅当 (i1)(i-1) 二进制下从低到高第 aa 位为 11

2
1 2 3 4
1 998244351 998244350 8
4
1 1 4 5 1 4 1 9 1 9 8 1 0 1 2 3
1 998244352 998244349 3 998244352 998244351 7 11 998244352 998244346 0 73 2 19 998244345 998244164

提示

【数据范围】

对于所有数据,保证 1n201\le n\le 20[xS]F(x)[0,998244353)Z[x^S]F(x)\in[0,998244353)\cap\mathbb Z[x]F(x)0[x^{\varnothing}]F(x)\neq 0

本题有 2020 个测试点,第 ii 个测试点满足 n=in=i

【提示】

假设 F(x)=SfSxSF(x)=\sum_S f_Sx^S,那么 [xS]F(x)=fS[x^S]F(x)=f_S

在本题中,xx 的乘法被定义为子集卷积,即:

$$x^S\cdot x^T=\begin{cases}0&S\cap T\neq\varnothing\\x^{S\cup T}&\text{otherwise}\end{cases} $$

可以证明本题答案唯一。