Skip to content

特征根法求递推式 ​

假设an+2=pan+1+qana_{n+2}=pa_{n+1}+qa_n

令x2=px+qx^2=px+q,解出x1,x2x_1,x_2

  • x1≠x2x_1\ne x_2,an=c1x1n+c2x2na_n=c_1x_1^n+c_2x_2^n
  • x1=x2,an=(c1n+c2)xnx_1=x_2,a_n=(c_1n+c_2)x^n

比如斐波那契数列,x2=x+1x^2=x+1,解得x1=1+52,x2=1−52x_1=\frac{1+\sqrt 5}{2},x_2=\frac{1- \sqrt 5}{2}

F1=F2=1F_1=F_2=1代入得,Fn=5+510∗(1+52)n−5−510∗(1−52)nF_n=\frac{\sqrt 5+5}{10}*(\frac{1+\sqrt 5}{2})^n-\frac{5-\sqrt 5}{10}*(\frac{1-\sqrt 5}{2})^n

下面给出一个O(p)O(\sqrt p)预处理,O(1)O(1)查询的做法

对于根号直接求一个二次剩余

首先对指数nn欧拉降幂,此时n<pn \lt p

令k=pk=\sqrt p,那么询问n=kt+r(t,r<k)n=kt+r(t,r \lt k),预处理xktx^{kt}和xrx^r

另外一种做法是像复数一样维护有根号的项