【模板】多项式复合集合幂级数

Luogu
IDLGP10461
Time5000ms
Memory512MB
DifficultyP7
快速沃尔什变换 FWT快速莫比乌斯变换 FMT集合幂级数,子集卷积模板题
给定一个集合幂级数 $F(x)$ 和一个多项式 $G(x)$,保证 $[x^{\varnothing}]F(x)=0$。定义 $x$ 的乘法为子集卷积,你需要对 $S\subseteq\{1,2,\cdots,n\}$ 求出 $[x^S]G(F(x))$ 对 $998244353$ 取模后的值。 如果你仍不清楚题意,可以阅读题面最后的提示部分。 ## Input 第一行一个正整数 $n$。 接下来一行 $2^n$ 个非负整数,第 $i$ 个整数表示 $[x^S]F(x)$,其中 $a\in S$ 当且仅当 $(i-1)$ 二进制下从低到高第 $a$ 位为 $1$。 接下来一行 $n+1$ 个非负整数,第 $i$ 个整数表示 $[x^{i-1}]G(x)$。 ## Output 输出一行 $2^n$ 个非负整数,第 $i$ 个整数表示 $[x^S]G(F(x))$ 对 $998244353$ 取模后的值,其中 $a\in S$ 当且仅当 $(i-1)$ 二进制下从低到高第 $a$ 位为 $1$。 [samples] ## Note #### 【数据范围】 对于所有数据,保证 $1\le n\le 20$,$[x^S]F(x),[x^n]G(x)\in[0,998244353)\cap\mathbb Z$。 本题有 $20$ 个测试点,第 $i$ 个测试点满足 $n=i$。 #### 【提示】 假设 $F(x)=\displaystyle \sum_S f_Sx^S$,那么 $[x^S]F(x)=f_S$。 在本题中,$x$ 的乘法被定义为子集卷积,即: $$x^S\cdot x^T=\begin{cases}0&S\cap T\neq\varnothing\\x^{S\cup T}&\text{otherwise}\end{cases}$$ **请注意内存访问连续性带来的效率差异。**
Samples
Input #1
2
0 1 2 3
2 1 1
Output #1
2 1 2 7
Input #2
4
0 8 3 2 7 3 9 0 0 1 8 2 3 7 0 2
1 0 4 8 2
Output #2
1 0 0 192 0 448 168 8824 0 0 0 536 0 248 520 26560 
API Response (JSON)
{
  "problem": {
    "name": "【模板】多项式复合集合幂级数",
    "description": {
      "content": "给定一个集合幂级数 $F(x)$ 和一个多项式 $G(x)$,保证 $[x^{\\varnothing}]F(x)=0$。定义 $x$ 的乘法为子集卷积,你需要对 $S\\subseteq\\{1,2,\\cdots,n\\}$ 求出 $[x^S]G(F(x))$ 对 $998244353$ 取模后的值。 如果你仍不清楚题意,可以阅读题面最后的提示部分。",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 5000,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P7"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP10461"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "给定一个集合幂级数 $F(x)$ 和一个多项式 $G(x)$,保证 $[x^{\\varnothing}]F(x)=0$。定义 $x$ 的乘法为子集卷积,你需要对 $S\\subseteq\\{1,2,\\cdots,n\\}$ 求出 $[x^S]G(F(x))$ 对 $998244353$ 取模后的值。\n\n如果你仍不清楚题意,可以阅读题面最后的提示部分。\n\n## Input\n\n第一行一个正整数 $n$。\n...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments