1.若已知方程x^2-dy ^2=1的最小特解(最小正整数解)x1,y1,那么有迭代公式:
xn=xn-1
x1+dyn-1y1
yn=xn-1y1+yn-1x1
求出所有的解(xk,yk),可以用矩阵表示如下:
|xk|=|x1 dy1| ^(k-1) |x1|
|yk| |y1 x1| |y1|
2.求特解
(1)暴力法
x^2=d
y ^2+1,
所以,x=sqrt(dy^2+1)
通过对y进行枚举,求出x,然后判断是否有 x^2==d
y ^2+1,即可。
(2)连分数法
详解

题目:
poj 1305
这个题目的特解可以直接求出,然后只要记住递推公式即可。

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
int main()
{
    int x1=3;
    int y1=1;
    ll x2=x1;
    ll y2=y1;
    int cnt=0;
    while(cnt<10)
    {//printf("cnt=%d   ",cnt);
        ll n=y2;
        ll m=(x2-1)/2;//printf("x2=%lld y2=%lld\n",x2,y2);
        if(n<m)
        {
            cnt++;
            printf("%10lld%10lld\n",n,m);
        }
        int tx=x2,ty=y2;
        x2=tx*3+8*ty;
        y2=tx+ty*3;
    }
    return 0;
}