AT_utpc2021_k Divide Polynomials by #Subset Sums

题目描述

设定素数 $P = 998244353$。对于一个多项式 $f(x)$,我们定义以下操作: 1. 选择一个正整数 $k$ 和一个有限次非零多项式 $g(x)$,使得 $f(x)$ 和 $(1 + x^k)g(x)$ 在每个次数上的系数对 $P$ 取模后相等。 2. 将 $f(x)$ 替换为 $g(x)$,并获得一个得分 $2^k$。 多项式可以进行任意多次这样的操作,求总得分的最大值,这个值被定义为多项式的 **美**。 给定一个数列 $A = (A_0, \ldots, A_{N-1})$,以及 $Q$ 个查询。 对于第 $i$ 个查询,给定整数 $l_i, r_i$,你需要计算多项式 $\displaystyle f(x) = \sum_{j=0}^{r_i - l_i} A_{j + l_i} x^j$ 的 **美**,并输出结果对 $P$ 取模后的值。 注意,所有操作中,$g(x)$ 的系数必须是小于 $998244353$ 的非负整数。

输入格式

标准输入按以下格式给出: > $N\ Q\ A_0\ \ldots\ A_{N-1}\ l_1\ r_1\ \vdots\ l_Q\ r_Q$

输出格式

请输出 $Q$ 行。 对于每个查询 $i$ ($1 \leq i \leq Q$),在第 $i$ 行输出查询的答案。

说明/提示

- 所有输入都为整数。 - $2 \leq N \leq 2000$ - $1 \leq Q \leq 2000$ - $0 \leq A_i < 998244353$ - $0 \leq l_i < r_i \leq N$ ### 样例解释 1 针对第一个查询,$f(x) = 1 + 2x + x^2$,最优策略是选择 $k = 1$ 两次。对于第二个查询,$f(x) = 1 + x + x^2 + x^3$,最佳选择是先选择 $k = 1$,再选择 $k = 2$。对于第三个查询,$f(x) = 1 + x + x^2$,无法进行任何操作。 ### 样例解释 2 在第一个查询中,处理 $f(x) = 1 + x + x^9 + x^{10}$ 的 **美**;在第二个查询中,计算 $f(x) = 0$ 的 **美**。 **本翻译由 AI 自动生成**