如果我们求出Pell方程的最小正整数解后,就可以根据递推式求出所有的解。




则根据上式我们可以构造矩阵,然后就可以快速幂了。




这样就可以求出第k大的解。

HDU3292题就要用到上面的矩阵方法求第k大的解。

拓展一点:

(1)如果第n个三角数t等于m的平方,即,那么x=2n+1,y=m,就是丢番图方程的解。

(2)求丢番图方程的最小正整数解,其中d为非完全平方数的正整数。


题目:http://poj.org/problem?id=2427


题意:求方程x^2-N*y^2=1的最小正整数解。本题要用到高精度,所以用Java。


import java.math.BigInteger;
import java.util.Scanner;
public class Main
{
public static void solve(int n)
{
BigInteger N, p1, p2, q1, q2, a0, a1, a2, g1, g2, h1, h2,p,q;
g1 = q2 = p1 = BigInteger.ZERO;
h1 = q1 = p2 = BigInteger.ONE;
a0 = a1 = BigInteger.valueOf((int)Math.sqrt(1.0*n));
BigInteger ans=a0.multiply(a0);
if(ans.equals(BigInteger.valueOf(n)))
{
System.out.println("No solution!");
return;
}
N = BigInteger.valueOf(n);
while (true)
{
g2 = a1.multiply(h1).subtract(g1);
h2 = N.subtract(g2.pow(2)).divide(h1);
a2 = g2.add(a0).divide(h2);
p = a1.multiply(p2).add(p1);
q = a1.multiply(q2).add(q1);
if (p.pow(2).subtract(N.multiply(q.pow(2))).compareTo(BigInteger.ONE) == 0) break;
g1 = g2;h1 = h2;a1 = a2;
p1 = p2;p2 = p;
q1 = q2;q2 = q;
}
System.out.println(p+" "+q);
}
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
while(cin.hasNextInt())
{
solve(cin.nextInt());
}
}
}  

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2281

题意:给出一个数N,求1到N的范围内,找到一个最大的n,满足,N最大达到10^18

分析:我们把上式写成,然后就是解Pell方程即可。

连分数求解Pell方程相关推荐

  1. Pell方程初识以及技巧性的求解Pell方程整数解(附带手推详细证明)

    什么是Pell方程 形如: x2−Ny2=1(n∈Z,n≠0)x^2-Ny^2=1(n\in \mathbb{Z},n\not= 0) x2−Ny2=1(n∈Z,n​=0) 且N为奇非平方数 可以 ...

  2. 关于Pell方程及其求解技巧

    Pell方程在不定方程里经常出现,解其他方程的时候最后往往归结为对某个pell方程的讨论.本文不加证明的叙述几个pell方程的结论,并讨论怎么用连分数来具体算出特定pell方程的解. Pell方程,一 ...

  3. 【pell方程学习】

    转自该博客 POJ-1320 Street Numbers pell方程 题目链接:http://poj.org/problem?id=1320 此题可以打表水过,但这里涉及的一个知识点,那就是pel ...

  4. [学习笔记] Pell方程

    感谢这两位巨佬,部分思路和图片来源于他们的启发: IBN5100 The-Pines-of-Star 是什么? Pell\text{Pell}Pell方程主要用来解决下面形式的方程: x2−dy2=1 ...

  5. 数论概论读书笔记 41.连分数与佩尔方程

    连分数与佩尔方程 通过反复地将小数部分翻到分母上并将整数部分分离,我们可以对任何一个数形成连分数: 连分数在视觉上滑向右下方,将它们写成分数却要花费很多的笔墨和空间,由于所有的分子都是1,故我们要做的 ...

  6. 连分数与佩尔方程特解(最小整数解)

    #include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[20000]; bool pell_mini ...

  7. OpenGL 使用FDTD求解电磁波方程

    OpenGL使用FDTD求解电磁波方程 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <GLXW/glxw.h> #include ...

  8. matlab雷诺曲线,多重网格法求解雷诺方程的MATLAB编程 - 程序语言 - 小木虫 - 学术 科研 互动社区...

    这是MATLAB有限差分法求解雷诺方程,可以参考下.希望对你有用 function [Fx,Fy]=FDM_circular(X,Y,X_dot,Y_dot) Fx=0; Fy=0; epsilon= ...

  9. Q144:FS,求解流体方程(逻辑总结)

    看完了<Fluid Simulation for Computer Graphics>的第一部分(基础部分). 真的只能算是"看完",着实搞不懂其中的数学原理and物理 ...

最新文章

  1. 联想笔记本不能无线上网
  2. c++ 冒泡排序_学习笔记-详解冒泡排序
  3. CentOS7 安装NFS SSH免密码登陆
  4. 云计算设计模式(三)——补偿交易模式
  5. 腾讯x5加载本地html乱码,腾讯X5内核播放器遇到的问题
  6. postfix过滤器名称不一致导致postfix/qmg:warning: connect to transport xxxx: No such file or directory...
  7. python之禅中文原文_Python之禅 - osc_ns45oss7的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. Docker快速安装Sybase数据库DBeaver数据库图形化管理开发工具
  9. 【Python】模块学习之Timer定时任务,递归定时自调获取博客浏览量
  10. webtop搭建简单知识库粗略介绍
  11. b+树的增删改查_EF Core / 基础_从建库到增删改查
  12. 利用 Commons-Fileupload 实现文件上传分析(转)
  13. java面试题汇总(1)
  14. Rocketmq技术分享
  15. 【南卡樱桃|读书笔记《学习高手》】
  16. SQL Server 2008 修改安装路径
  17. matlab生成的图片有边,科学网—图片空白边缘处理/统计直方图---matlab/保存生成高质量的清晰图 - 杨小林的博文...
  18. python实现Flesch Reading Ease Readability Formula——Flesch阅读易读性公式
  19. H5纯页面方式手机端实现“扫一扫”功能(不是直接调起摄像头)
  20. 极域电子教室学生端全屏广播的破解及编程处理(附静态库)

热门文章

  1. 使用SpringTask定时获取传感器设备信息并缓存到Redis
  2. Redis面试题详解
  3. Spring版本特性:Spring各个版本引入了哪些新特性?
  4. php redis删除所有key,php redis批量删除key的方法
  5. 默认标准错误文件linux,Linux中标准输出和标准错误的重导向
  6. IDEA使用技巧整理
  7. 深入理解Kafka(1)
  8. Java之品优购课程讲义_day19(6)
  9. centos7 安装SSH
  10. 关于javascript中私有作用域的预解释