POJ 2427 pell方程
题意:求解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()); } } }
最后更新:2017-04-03 16:48:47
上一篇:
Javascript页面打印的页眉页脚的清除与设置
下一篇:
USB充电插拔和usb Debugging connect提示
.NET Core采用的全新配置系统[7]: 将配置保存在数据库中
阿里云全球第二批MVP 祁宁专访 - 社区的成长才是我们的价值所在
假关机or真休眠? Win 8开关机刨根问底
百度DuerOS硅谷公布普罗米修斯计划,100万美金基金吸引AI才俊
Java常用类库--正则表达式(Pattern类、Matcher类)
java.util.concurrent包(5)——CountDownLatch使用
《Spring 3.0就这么简单》——1.5 业务层
Spring事务管理—aop:pointcut expression解析
【上报纸啦】95后大学生用机器学习PAI大战老年痴呆
SQL查询递归