HDU 2281 Square Number (Pell方程&数论)
来源:互联网 发布:淘宝网手机网页版 编辑:程序博客网 时间:2024/05/18 04:25
http://acm.hdu.edu.cn/showproblem.php?pid=2281
思路:
原式化为:m^2-48x^2=1,(m=4n+3)
立即得到最小正整数解:m1=7,x1=1
后面就和uva 138一样了。
注意:得到mk后还要判断(mk-3)%4==0才能加到n中,详见代码。
完整代码:
/*31ms,276KB*/#include<cstdio>#include<vector>using namespace std;typedef __int64 ll;const ll maxn = 1e18;ll n[20], x[20];vector<ll> nn, xx;int main(){int i;long long N;n[0] = 7LL, x[0] = 1LL;nn.push_back(1LL), xx.push_back(1LL);for (i = 1;; ++i){n[i] = 7LL * n[i - 1] + 48LL * x[i - 1];x[i] = n[i - 1] + 7LL * x[i - 1];if (n[i] < 0) break;if ((n[i] - 3) % 4 == 0) nn.push_back((n[i] - 3) / 4), xx.push_back(x[i]);}nn.push_back(maxn + 5);while (scanf("%I64d", &N), N){for (i = 0; i < nn.size(); ++i){if (N < nn[i]){printf("%I64d %I64d\n", nn[i - 1], xx[i - 1]);break;}}}return 0;}
- HDU 2281 Square Number (Pell方程&数论)
- HDU 2281 pell方程
- HDU 3292 pell方程
- UVa 138 Street Numbers(数论&Pell方程)
- 连分数求解Pell方程
- 解Pell方程(java)
- POJ 2427 pell方程
- poj1320(解pell方程)
- 连分数求解Pell方程
- 求Pell方程解
- 佩尔(Pell)方程
- PKU 1046-Square Number(数论)
- UVALive 4270 Discrete Square Roots 模方程,数论
- HDU2281(Pell方程的妙用)
- hdu 3292 No more tricks, Mr Nanguo pell方程+矩阵快速幂
- hdu 1018 Big Number (数论)
- HDU 4279 Number [数论+简证]
- hdu 1212 Big Number(数论)
- 如何mount ext4 分区
- androd之绘制文本(FontMetrics)
- 显式转换 id和void *
- 【第二章】证券交易程序_整理
- Python字符与数字的相互转换
- HDU 2281 Square Number (Pell方程&数论)
- 【第二章 第一节】
- 1066. Root of AVL Tree (25)
- .net连接Access 2000或Access 2007
- 【第二章 第二节】
- C#后台与前台界面交互——传数组
- C#基础-类
- 【第二章 第三节】
- 【第二章 第四节】