二阶常系数齐次线性递推

二阶常系数齐次线性递推

题意

给定一个序列的线性递推式:

fn={afn1+bfn2,n2f1,n=1f0,n=0f_n= \begin{cases} a\cdot f_{n-1}+b\cdot f_{n-2}&, & n\geq2 \\ f_1 & , & n=1 \\ f_0 & , & n=0 \end{cases}

多组询问,给定 n,a,b,f0,f1n,a,b,f_0,f_1,求 fnf_n 的值。

解法

毒瘤出题人的做法就是一个矩阵光速幂。

这里考虑一个通项公式\生成函数的做法:

fn=afn1+bfn2f_n=a\cdot f_{n-1}+b\cdot f_{n-2} 移项得到:fnafn1bfn2=0f_n-a\cdot f_{n-1}-b\cdot f_{n-2}=0

g(x)=k=0fkxkg(x)=\sum_{k=0}^{\infty}f_k\cdot x^k 的生成函数,那么易知:

g(x)=f0+f1x1+f2x2+f3x3axg(x)=af0x1+af1x2+af2x3+bx2g(x)=bf0x2+bf1x3+bf2x4+g(x)=f_0+f_1\cdot x^1+f_2\cdot x^2+f_3\cdot x^3\cdots \\ a\cdot x\cdot g(x)=a\cdot f_0\cdot x^1+ a\cdot f_1\cdot x^2+a\cdot f_2\cdot x^3+\cdots \\ b\cdot x^2\cdot g(x)=b\cdot f_0\cdot x^2+b\cdot f_1\cdot x^3+b\cdot f_2\cdot x^4+\cdots

按照套路推导,三式相加减易知:

(1axbx2)g(x)=f0+(f1af0)x+(f2af1bf0)x2+(1-a\cdot x-b\cdot x^2)\cdot g(x)=f_0+(f_1-a\cdot f_0)\cdot x+(f_2-a\cdot f_1-b\cdot f_0)\cdot x^2+\cdots

观察易知对于 x2x^2 及其以后的项的系数都满足 fnafn1bfn2=0f_n-a\cdot f_{n-1}-b\cdot f_{n-2}=0,那么原式可化为:

(1axbx2)g(x)=f0+(f1af0)xg(x)=f0+(f1af0)x1axbx2(1-a\cdot x-b\cdot x^2)\cdot g(x)=f_0+(f_1-a\cdot f_0)\cdot x \\ g(x)=\frac{f_0+(f_1-a\cdot f_0)\cdot x}{1-a\cdot x-b\cdot x^2}

考虑把 g(x)g(x) 化简成 g(x)=c11Ax+c21Bxg(x)=\frac{c_1}{1-A\cdot x}+\frac{c_2}{1-B\cdot x} 的形式,大量的计算后得到:

A=a+a2+4b2,B=aa2+4b2g(x)=c11a+a2+4b2x+c21aa2+4b2xA=\frac{a+\sqrt{a^2+4\cdot b} }{2},B=\frac{a-\sqrt{a^2+4\cdot b} }{2} \\ g(x)=\frac{c_1}{1-\frac{a+\sqrt{a^2+4\cdot b} }{2}\cdot x}+\frac{c_2}{1-\frac{a-\sqrt{a^2+4\cdot b} }{2}\cdot x}

将部分分式和的形式的 g(x)g(x) 代入 (1axbx2)g(x)=f0+(f1af0)x(1-a\cdot x-b\cdot x^2)\cdot g(x)=f_0+(f_1-a\cdot f_0)\cdot x 中:

(1aa2+4b2x)c1+(1a+a2+4b2x)c2=f0+(f1af0)x(c1+c2)+(aa2+4b2c1a+a2+4b2c2)x=f0+(f1af0)x(1-\frac{a-\sqrt{a^2+4\cdot b} }{2}\cdot x)\cdot c_1+(1-\frac{a+\sqrt{a^2+4\cdot b} }{2}\cdot x)\cdot c_2=f_0+(f_1-a\cdot f_0)\cdot x \\ (c_1+c_2)+(-\frac{a-\sqrt{a^2+4\cdot b} }{2}\cdot c_1-\frac{a+\sqrt{a^2+4\cdot b} }{2}\cdot c_2)\cdot x=f_0+(f_1-a\cdot f_0)\cdot x

那么又到了喜闻乐见的暴算解二元一次方程组的时候了:

{c1+c2=0aa2+4b2c1a+a2+4b2c2=f1af0\begin{cases} c_1+c_2=0 \\ -\frac{a-\sqrt{a^2+4\cdot b} }{2}\cdot c_1-\frac{a+\sqrt{a^2+4\cdot b} }{2}\cdot c_2=f_1-a\cdot f_0 \end{cases}

{c1=aa2+4b2a2+4bf0+1a2+4bf1c2=a+a2+4b2a2+4bf01a2+4bf1\begin{cases} c_1=-\frac{a-\sqrt{a^2+4\cdot b} }{2\sqrt{a^2+4\cdot b} }\cdot f_0+\frac{1}{\sqrt{a^2+4\cdot b} }\cdot f_1 \\ c_2=\frac{a+\sqrt{a^2+4\cdot b} }{2\sqrt{a^2+4\cdot b}}\cdot f_0-\frac{1}{\sqrt{a^2+4\cdot b} }\cdot f_1 \end{cases}

这里考虑一个生成函数的封闭形式 11kx\frac{1}{1-k\cdot x},展开后得到:

g(x)=1+kx+k2x2+g(x)=i=0kixig(x)=1+k\cdot x+k^2\cdot x^2+\cdots \\ g(x)=\sum_{i=0}^{\infty}k^i\cdot x^i

那么该生成函数的第 nn 项的系数为 knk^n,所以 fn=c1An+c2Bnf_n=c_1\cdot A^n+c_2\cdot B^n,代入 c1,c2,A,Bc_1,c_2,A,B 后得到:

fn=(aa2+4b2a2+4bf0+1a2+4bf1)(a+a2+4b2)n+(a+a2+4b2a2+4bf01a2+4bf1)(aa2+4b2)nf_n=(-\frac{a-\sqrt{a^2+4\cdot b} }{2\sqrt{a^2+4\cdot b} }\cdot f_0+\frac{1}{\sqrt{a^2+4\cdot b} }\cdot f_1)\cdot(\frac{a+\sqrt{a^2+4\cdot b} }{2})^n+(\frac{a+\sqrt{a^2+4\cdot b} }{2\sqrt{a^2+4\cdot b}}\cdot f_0-\frac{1}{\sqrt{a^2+4\cdot b} }\cdot f_1)\cdot(\frac{a-\sqrt{a^2+4\cdot b} }{2})^n

例子

著名的斐波那契数列 fn=fn1+fn2f_n=f_{n-1}+f_{n-2},此时 a=1,b=1,f0=0,f1=1a=1,b=1,f_0=0,f_1=1,代入通项公式得到:

fn=15(1+52)n15(152)nf_n=\frac{1}{\sqrt{5} }(\frac{1+\sqrt{5} }{2})^{n}-\frac{1}{\sqrt{5} }(\frac{1-\sqrt{5} }{2})^{n}

实现

考虑模数为奇质数下的二次剩余和光速幂。如果不存在二次剩余怎么办?

这个对任意模数下求二次剩余的东西我完全不会~~(好像跟扩域有关?)~~,请教教我。