【做题记录】CF1096G Lucky Tickets

  • \(\text{CF1096G Lucky Tickets}\)

    • 算法:\(\text{NTT}\)

题目:

一个 \(n\) 位数,每位可以是给出的 \(k\) 个数码中的一个数,可以有前导\(0\),输出前 \(n/2\) 位之和与后 \(n/2\) 之和相等的方案数,保证 \(n\) 是偶数。

输入的第一行是两个整数 \(n,k\),接下来的一行有 \(k\) 个数\(d_1,d_2,\cdots,d_k(0\leq d_i\leq 9)\)

输出一个数,为方案数模 \(998244353\) 的值。

\(2≤n≤2⋅10 ^5,1≤k≤10\)

题解:

\(f_{i,j}\) 表示 \(i\) 个数的和是 \(j\) 的方案数。

答案即为

\[\sum_k{(f_{ \frac{n}{2},k})^2} \]

考虑 \(f\)。显然有转移

\[f_{x+1,k}=\sum_{i=0}^9 f_{x,k-i} \]

然后老套路,反转 \(f\),设为 \(g\)

\[\therefore f_{x+1,k}=\sum_{i=0}^{\min (k,9)}f_{x,i}\ g_{x,k-i} \]

比较容易发现没有字符集限制的情况下 \(G=1\)

有限制的时候 \(g=\sum\limits_{i=0}^9{a_ix^i}\)\(a_i\) 表示 \(i\) 是否在允许的字符集中,\(x\) 没有实际意义

所以要做的就是求出 \(g\left( x \right) ^{\frac{n}{2}}\) 然后统计每一项系数的平方和

posted @ 2022-01-07 19:29  trsins  阅读(21)  评论(0编辑  收藏  举报