您的位置:首页 > 其它

POJ 1320:Street Numbers——佩尔方程

2015-01-10 21:43 351 查看
题意:方程 1+2+3+...+n=(n+1)+(n+2)+...+m 求这个方程的十个解,分别按格式输出思路:化简一下就是 (2m+1)^2 - 8n^2 =1 刚好就是《数论及应用》这一章里的明显的佩尔方程(形如x^2-Dy^2=1)
令x=2m+1 ,y=n,D=8那么 x(n)=x(n-1)*x1+D*y(n-1)*y1    y(n)=x(n-1)*y1+y(n-1)*x1目测最小解是x1=3,y1=1 所以剩下就直接推十个答案出来就行了。
可以用递推解,也可以用矩阵,构造矩阵为:


当然打表打十个提交是最快,内存最少的
输出前十组满足条件的(n,m)(从小到大),每组占一行,每个数占10格,向右对齐
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int x,y,x1=3,y1=1,px=3,py=1,d=8,i;
for(i=0;i<10;i++){
x=px*x1+d*py*y1;
y=px*y1+py*x1;
printf("%10d%10d\n",y,(x-1)/2);
px=x;
py=y;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: