芝士:佩尔方程

Posted loney-s

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了芝士:佩尔方程相关的知识,希望对你有一定的参考价值。

背景

对于一个(x^2-dy^2=1)的方程进行求解

这里的解为整数

其中(d)已知

解法

若d为完全平方数

(x^2-(sqrt dy)^2=1)

((x+sqrt dy)(x-sqrt d y)=1)

因为我们要求的解为正整数,并且(d)也为正整数

所以((x+sqrt d y))((x-sqrt dy))都为整数

(egin{cases}x+sqrt dy=1\x-sqrt dy=1end{cases})

或者

(egin{cases}x+sqrt dy=-1\x-sqrt dy=-1end{cases})

其中两个方程的解法一样,这里只对其中一种进行讨论

对于答案为(1)

将两个式子加起来,可以得到

(egin{cases}x=1\y=0end{cases})

或者

(egin{cases}x=-1\y=0end{cases})

若d不为完全平方数

引理

(egin{cases}x_1^2-dy_1^2=1\x_2^2-dy_2^2=1end{cases})

((x_1^2-dy_1^2)(x_2^2-dy_2^2)=1)

(x_1^2x_2^2-dx_2^2y_1^2-dx_1^2y_2^2+d^2y_1^2y_2^2=1)

(((x_1x_2)^2+(dy_1y_2)^2)-d((x_1y_2)^2+(x_2y_1)^2)=1)

(((x_1x_2)^2+2dx_1x_2y_1y_2+(dy_1y_2)^2)-d((x_1y_2)^2+2x_1x_2y_1y_2+(x_2y_1)^2)=1)

((x_1x_2+dy_1y_2)^2-d(x_1y_2+x_2y_1)^2=1)

所以((x_1x_2+dy_1y_2,x_1y_2+x_2y_1))也为佩尔方程的一组解

注意这个式子对于(x_1==x_2,y_1==y_2)的时候一样成立

递推

这里讨论的解均为正整数

假设我们已经知道最小的一组解((x_1,y_1),(x_1ge0,y_1ge0))

(y_1=sqrt{frac{x_1^2-1}{d}})

很明显,对于(x_1)最小的时候,(y_1)也是最小的

考虑上面解的形式$(x_1x_2+dy_1y_2,x_1y_2+x_2y_1) $

我们假设((x_i,y_i))为佩尔方程的第(i)小解

((x_1x_i+dy_1y_i,x_1y_i+x_iy_1))

首先对于((x_i,y_i),d)是固定的

也就用上面的引理推出来的解的大小与(x_1,y_1)相关

注意到我们讨论的解为正整数

推出来的解一定是随着(x_1,y_1)的增大而增大的

所以(egin{cases}x_{i+1}=x_1x_i+dy_1y_i\y_{i+1}=x_1y_i+x_iy_1end{cases})

很明显这个递推式是可以用矩阵快速幂优化的

(egin{bmatrix}x_{i+1}\y_{i+1}end{bmatrix}=egin{bmatrix}x_1\y_1end{bmatrix}egin{bmatrix}x_1,dy_1\y_1,x_1end{bmatrix}^i)

最小解

根据实验证明,大多数题目的最小解都很小

所以直接暴力!!!

代码

咕咕咕

以上是关于芝士:佩尔方程的主要内容,如果未能解决你的问题,请参考以下文章

佩尔方程

佩尔方程

佩尔方程

HDU 3292 佩尔方程求解 && 矩阵快速幂

Problem G: 深入浅出学算法008-求佩尔方程的解

hdu2281 Squre Number——Pell方程