2019牛客多校第五场 generator 1——广义斐波那契循环节&&矩阵快速幂

理论部分

二次剩余

在数论中,整数 $X$ 对整数 $p$ 的二次剩余是指 $X^2$ 除以 $p$ 的余数。

当存在某个 $X$,使得式子 $X^2 \equiv d(mod \ p)$ 成立时,称“ $d$ 是模 $p$ 的二次剩余”

当对任意 $X$,$X^2 \equiv d(mod \ p)$ 都不成立时,称“ $d$ 是模 $p$ 的二次非剩余”

矩阵的相似对角化

相似矩阵:对于矩阵 $A$ 和 $B$,若存在可逆矩阵 $P$,使得 $P^{-1}AP=B$,则称 $A$ 相似于 $B$,记作 $A\sim B$。

矩阵可对角化是指与对角矩阵相似,即 $P^{-1}AP = diag(\lambda _1, \lambda _2,...,\lambda _n)$

定理:$n$ 阶矩阵 $A$ 与对角矩阵相似的充要条件是 $A$ 有 $n$ 个线性无关的特征向量。简单的判断就是 $|A| \neq 0$.

分析

来源于 acdreamers 的广义Fibonacci数列找循环节,这里只是梳理一下。

将递推式表示成转移矩阵的形式,相当于只需找到转移矩阵的周期。

即求最小的 $n$,使得

$${\begin{bmatrix} a & b\\ 1 & 0 \end{bmatrix}}^n(mod \ p) = \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix}$$

我们可以找到一个满足条件的 $n$,然后枚举其因子。

设 $A$ 相似于 $D$,$A$ 的特征根分别为 $\lambda _1,\lambda _2$.

则D为

$D = \begin{bmatrix} \lambda _1 & 0\\  0 & \lambda _2 \end{bmatrix}$

因为 $A^n = T^{-1}D^nT$,所以 $D^n \equiv I(mod \ p)$ 时,$D^n \equiv I(mod \ p)$

由于$$D^n = {\begin{bmatrix} \lambda _1 & 0\\  0 & \lambda _2 \end{bmatrix}}^n = D = \begin{bmatrix} \lambda _1^n & 0\\  0 & \lambda _2^n \end{bmatrix}(mod \ p) = I$$

于是 $\lambda _1^n\equiv 1(mod \ p),\ \lambda _2^n\equiv 1(mod \ p)$.

如何找到 $n$ 呢?

直接上结论吧!(看不懂了555)

设 $\Delta  = a^2+4b$

  • 若 $\Delta$ 是 $p$ 的二次剩余,$n=p-1$
  • 若 $\Delta$ 是 $p$ 的二次非剩余,$n=(p+1)(p-1)$
  • 若 $\Delta=p$,则无法相似化。幸好题目不会出现这种情况

上述结论还是针对 $p$ 为素数,$p$ 为合数呢?

首先,质因数分解 $p=p_1^{a_1}p_2^{a_2}...p_k^{a_k}$,

设 $g(x)$ 为模 $x$ 时循环节长度,有结论 $g(p_i^{a_i}) = p_i^{a_1-1} g(p_i)$

所以

$$
\begin{aligned}
g(x) & =g(p_1^{a_1}p_2^{a_2}...p_k^{a_k})\\
&= p_1^{a_1-1} g(p_1) \cdot  p_2^{a_2-1} g(p_2) ...  p_k^{a_k-1} g(p_k)\\
&= (p / p_1p_2... p_k) g(p_1)g(p_2) ...   g(p_k)
\end{aligned}$$

实现

二次剩余我又不会判断,直接当作 $(p+1)(p-1)$,大不了多个倍数。

按道理最小的循环节不是 $n$,而是 $n$ 的因数,感觉分解再判断挺麻烦的,不管了,大不了多个倍数。

猜你喜欢

转载自www.cnblogs.com/lfri/p/11291757.html