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;
}
令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;
}
相关文章推荐
- POJ1320 Street Numbers(佩尔方程)
- POJ 1320 Street Numbers [佩尔方程]
- POJ 1320 Street Numbers 解佩尔方程
- POJ - 1320 - Street Numbers - (佩尔方程)
- POJ 1320Street Numbers(佩尔方程定理)
- POJ 1320 Street Numbers 佩尔方程
- POJ1320 Street Numbers【佩尔方程】
- POJ1320 Street Numbers【佩尔方程】
- poj 1320 佩尔方程递推
- POJ 1320:Street Numbers 佩尔方程
- POJ 1320-Street Numbers(解佩尔方程)
- Poj1320佩尔方程见数论书115或者110页(暴力求解)
- POJ 1320 Street Numbers 笔记
- POJ 1320 Street Number(佩尔方程)
- poj 1320 Street Numbers(解pell方程)
- poj-1320 Street Number 佩尔方程
- poj 1320 Street Numbers 解pell方程
- 毕达哥拉斯三元组:poj 1305+佩尔方程:poj 1320,hdu 3292(特殊不定方程)
- POJ1320 UVA138 Street Numbers【Pell方程+数学】
- poj 1320——Street Numbers