poj 1320 Street Numbers (佩尔方程)

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

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

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

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

 

\LARGE x_n=x_0x_{n-1}+dy_0y_{n-1}

\LARGE y_n=y_0x_{n-1}+x_{0}y_{n-1}

各个变量的通项公式:

\LARGE x_n=2x_0x_{n-1}-x_{n-2}

\LARGE y_n=2x_0y_{n-1}-y_{n-2}

题意:求满足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;
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值