求Pell方程解
来源:互联网 发布:人工智能 世界大学 编辑:程序博客网 时间:2024/05/03 09:49
#include <iostream>#include <cstdio>#include <cmath>using namespace std;struct PellAns{ int p,q;};struct Node{ int g,h;};PellAns Solve(int n){ PellAns s[4]; //迭代过程中的答案 Node w[4]; int a[4]; s[0].p=0;s[0].q=1; s[1].p=1;s[1].q=0; a[0]=(int)floor(sqrt((double)n)); //拿到 √d a[2]=a[0]; w[1].g=0;w[1].h=1; while(1) //求解迭代的过程 { w[2].g=-w[1].g+a[2]*w[1].h; w[2].h=(n-w[2].g*w[2].g)/w[1].h; a[3]=(int)floor((double)(w[2].g+a[0])/w[2].h); s[2].p=a[2]*s[1].p+s[0].p; s[2].q=a[2]*s[1].q+s[0].q; if((s[2].p*s[2].p-n*s[2].q*s[2].q)==1&&s[2].p>0&&s[2].q>0) //找到了正整数的解 return s[2]; //保留结果 w[0]=w[1];w[1]=w[2]; a[2]=a[3]; s[0]=s[1];s[1]=s[2]; }}int main(){ int n; PellAns ans; while(scanf("%d",&n)!=EOF) //n为完全平方数时没有非平凡解 { ans = Solve(n); printf("%d\t%d\n",ans.p,ans.q); } return 0;}
0 0
- 求Pell方程解
- 解Pell方程(java)
- poj1320(解pell方程)
- hdu3292(解pell方程,求第K个解)
- poj 1320 Street Numbers(解pell方程)
- poj 1320 Street Numbers 解pell方程
- 连分数求解Pell方程
- HDU 3292 pell方程
- POJ 2427 pell方程
- HDU 2281 pell方程
- 连分数求解Pell方程
- 佩尔(Pell)方程
- HDU2281(Pell方程的妙用)
- 求方程的解
- Pell方程解法+连分数自己整理
- Pell Equation (佩尔方程)
- UVa 138 Street Numbers(数论&Pell方程)
- HDU 2281 Square Number (Pell方程&数论)
- [leetcode][贪心] Candy
- oralce一些系统表整理
- Spring Security form login using database
- EIP寄存器
- Chrome浏览器快捷键大全
- 求Pell方程解
- 【Android】任务和返回栈(tasks and back stack)
- Java转义字符
- Objective-C 对 URL 对 URLEncode 编码
- __str__与 __repr__
- 在linux终端下打开pdf文件
- 小议:如何解决创建Web Application失败问题?
- AngularJs $broadcast $emit $on 事件触发controller间的值传递
- 安装svn