博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SPOJ 1739 Yet Another Equation(Pell方程)
阅读量:5773 次
发布时间:2019-06-18

本文共 1342 字,大约阅读时间需要 4 分钟。

题目链接:

题意:给出方程x^2-n*y^2=1的最小整数解。

思路:参见金斌大牛的论文《欧几里得算法的应用》。

 

import java.util.*;import java.math.*;import java.io.*;public class Main {       static BigInteger ONE=BigInteger.valueOf(1);    static BigInteger ZERO=BigInteger.valueOf(0);        public static BigInteger V(int x)    {        return BigInteger.valueOf(x);    }    public static void main(String[] args) {        Scanner S=new Scanner(System.in);        int T;        T=S.nextInt();        while(T--!=0)        {            BigInteger p0,p1,p2,q0,q1,q2,g0,g1,h0,h1,a,a0,n;            n=S.nextBigInteger();            p0=ZERO; p1=ONE;            q0=ONE; q1=ZERO;            a0=a=V((int)Math.sqrt(n.intValue()));            g0=ZERO; h0=ONE;            while(true)            {                g1=ZERO.subtract(g0).add(a.multiply(h0));                h1=n.subtract(g1.multiply(g1)).divide(h0);                p2=a.multiply(p1).add(p0);                q2=a.multiply(q1).add(q0);                a=g1.add(a0).divide(h1);                if(p2.multiply(p2).subtract(n.multiply(q2).multiply(q2)).compareTo(ONE)==0)                {                    break;                }                p0=p1; p1=p2;                q0=q1; q1=q2;                g0=g1; h0=h1;            }            System.out.print(p2);            System.out.print(' ');            System.out.println(q2);        }    }}

  

转载地址:http://onaux.baihongyu.com/

你可能感兴趣的文章
JS中比较数字大小
查看>>
jQuery插件的开发
查看>>
基础,基础,还是基础之JAVA基础
查看>>
如何成为一个C++高级程序员
查看>>
我的友情链接
查看>>
显式锁(第十三章)
查看>>
看linux书籍做的一些重要笔记(2011.07.03更新)
查看>>
CString、Char* ,char [20]、wchar_t、unsigned short转化
查看>>
从案例学RxAndroid开发(上)
查看>>
Redis学习手册(内存优化)
查看>>
浅尝TensorFlow on Kubernetes
查看>>
springboot系列十 Spring-Data-Redis
查看>>
excel进行矩阵计算
查看>>
基于Android平台的动态生成控件和动态改变控件位置的方法
查看>>
BOM
查看>>
iOS: Block的循环引用
查看>>
MySQL类型转换
查看>>
变量声明提升1
查看>>
系列文章目录
查看>>
手把手教你如何提高神经网络的性能
查看>>