给定整数 \(n, m, k(k \le n \le 30, m \le 100)\),和一个长度为 \(m + 1\) 的正整数数组 \(v_0, v_1, \ldots, v_m\)。对于一个长度为 \(n\),每个元素均不超过 \(m\) 的非负整数序列 \(\{a_i\}\),我们定义它的权值为 \(v_{a_1} \times v_{a_2} \times \cdots \times v_{a_n}\)。
当这样的序列 \(\{a_i\}\) 满足整数 \(S = 2^{a_1} + 2^{a_2} + \cdots + 2^{a_n}\) 的二进制表示中 \(1\) 的个数不超过 \(k\) 时,我们认为 \(\{a_i\}\) 是一个合法序列。计算所有合法序列 \(\{a_i\}\) 的权值和对 \(998244353\) 取模的结果。
DP 是几乎演都不演了。令 \(dp_{i, j, k, x}\) 表示有 \(j\) 个数 \(\le i\),向 \(S\) 的第 \(i + 1\) 为进了 \(k\) 的位,\(S\) 的 \(0 \sim i\) 位有 \(x\) 个 \(1\) 的权值和。枚举有多少个数为 \(i + 1\) 转移即可。
时间复杂度:\(O(n^4m)\),应该有个 \(\frac{1}{16}\) 的常数,通过不难。