CF1783D Different Arrays
题目描述
给定一个包含 $n$ 个整数的数组 $a$。
你需要对该数组进行 $n-2$ 次操作:
- 第一次操作时,你可以选择将 $a_2$ 加到 $a_1$ 上,并从 $a_3$ 中减去 $a_2$,或者将 $a_2$ 加到 $a_3$ 上,并从 $a_1$ 中减去 $a_2$;
- 第二次操作时,你可以选择将 $a_3$ 加到 $a_2$ 上,并从 $a_4$ 中减去 $a_3$,或者将 $a_3$ 加到 $a_4$ 上,并从 $a_2$ 中减去 $a_3$;
- 以此类推;
- 最后一次操作时,你可以选择将 $a_{n-1}$ 加到 $a_{n-2}$ 上,并从 $a_n$ 中减去 $a_{n-1}$,或者将 $a_{n-1}$ 加到 $a_n$ 上,并从 $a_{n-2}$ 中减去 $a_{n-1}$。
也就是说,在第 $i$ 次操作时,你可以将 $a_{i+1}$ 加到它的一个相邻元素上,并从另一个相邻元素中减去 $a_{i+1}$。
例如,若数组为 $[1, 2, 3, 4, 5]$,一种可能的操作序列如下:
- 从 $a_3$ 中减去 $2$,并将其加到 $a_1$ 上,数组变为 $[3, 2, 1, 4, 5]$;
- 从 $a_2$ 中减去 $1$,并将其加到 $a_4$ 上,数组变为 $[3, 1, 1, 5, 5]$;
- 从 $a_3$ 中减去 $5$,并将其加到 $a_5$ 上,数组变为 $[3, 1, -4, 5, 10]$。
最终得到的数组为 $[3, 1, -4, 5, 10]$。
如果一个数组可以通过上述操作序列从 $a$ 得到,则称其为“可达数组”。你需要计算可达数组的数量,并输出对 $998244353$ 取模的结果。
输入格式
第一行包含一个整数 $n$($3 \le n \le 300$)。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le 300$)。
输出格式
输出一个整数,表示可达数组的数量。由于答案可能很大,请输出其对 $998244353$ 取模的结果。
说明/提示
由 ChatGPT 4.1 翻译