CW初中-C106D

发布时间 2023-12-07 20:52:19作者: Imcaigou

稍微重复一下题意,有 \(n\) 个数 \(a_i\),将其以一种顺序串联成一个“大数”,使这个数对 \(11\) 取模的结果为 \(0\),求一共有多少个不同的顺序?方案数对 \(998244353\) 取模。另外,相同的数若在 \(a\) 数组中多次出现,则视为不同的数。

\(0 \leq a_i \leq 10^9, 0 < n \leq 2000\)

首先许多同学会首先想到 \(11\) 倍数的性质:“两头一拉,中间相加”。但是信息学竞赛生的直觉告诉我们若将此题化为这样的问题只是在使题目变复杂。

所以我们做题的一个首要步骤是将题目化简或变得易懂、更易思考、更易入手、更易实现。

性质:

设:

\(10^pa \equiv b \; (mod\;11)\),其中 \(b\) 满足 \(0 \leq b < 11\)

\[\because 10^pa \equiv b \; (\!\!\!\!\!\!\mod \; 11) \]

\[\therefore (10 - 11) ^ pa \equiv b \; (\!\!\!\!\!\!\mod \; 11) \]

\[\therefore (- 1) ^ pa \equiv b \; (\!\!\!\!\!\!\mod\;11) \]

\[\therefore b = \begin{cases} a & p \; is \; odd \\ 11 - a & p \; is \; even \\ \end{cases} \]

结论:

设:

\( e_i = \begin{cases} 1 & ((\log_{10}{a_i}) + 1) \; is \; odd \\ -1 & ((\log_{10}{a_i}) + 1) \; is \; even \\ \end{cases} \)

假设有一种已知顺序 \(b_1,b_2,b_3...b_n\)

由上述性质得:

\(b_1,b_2,b_3...b_n\) 为一种合法的顺序,则有:

\[\sum_{i=1}^{n}(a_{b_i} \prod_{j=1}^{i-1}(e_{b_j})) \equiv 0 \;\;\; (\!\!\!\!\!\!\mod 11) \]

解释一下,由上述性质可知一个 \(a_i\) 对总和的影响取决于它后面的位数,若 \(a_i\) 向低位的位数为奇数,则将总和减去 \(a_i\),否则将总和加上 \(a_i\)

剩下的求方案数就是 DP 的事了,这种式子下的转移就十分地简单,而且有多种转移方式(我的方法比较蠢)。如果想不到就问问教练或身边的其他同学,如果实在不清楚,也可以在评论区留言,我看情况把我的 DP 方程放上来。当然有自己的转移方法的也可以在评论区提出。

给一个提示,可以将 \(e_i\) 分正负分别讨论DP方程,然后再用乘法原理之类的组合起来。

因为我累了,所以这篇博客就到这里吧。