poj 1320 Street Numbers (佩尔方程)

版权声明:转载注明下出处就行了。 https://blog.csdn.net/LJD201724114126/article/details/85010528

题目链接:哆啦A梦传送门

佩尔方程:参考链接:维基

\large {\color{Red} x^{2}-n*y^{2}=1}

最小解,记作(x1,y1),则所有的解(xi,yi)由以下的递回关系式得到:

\displaystyle x_{i+1} = x_1 x_i + n y_1 y_i,

\displaystyle y_{{i+1}}=x_{1}y_{i}+y_{1}x_{i}

题意:求满足1+2+3+……+(n-1)=(n+1)+(n+2)+……+m的前10项n和m。

我们化简可得:\large {\color{Red} (2*m+1)^{2}-8n^{2}=1}

那么就可以得结果了。x1=3,y1=1。

\large {\color{Red} x_{i+1}=3x_{i}+8y_{i}}

\large {\color{Red} y_{i+1}=3y_{i}+x_{i}}

代码:

///佩尔方程应用

#include<cstdio>
#include<algorithm>
#include<cstring>

using namespace std;
typedef long long LL;

int main()
{
    LL px=3,py=1,x1=3,y1=1,n=8;

    for(int i=1;i<=10;i++)
    {
        LL x=3*px+8*py;
        LL y=3*py+px;
        printf("%10lld%10lld\n",y,(x-1)/2);
        px=x;
        py=y;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/LJD201724114126/article/details/85010528