毕达哥拉斯三元组:
正整数x,y,z构成一个本原毕达哥拉斯三元组且y为偶数,当且仅当存在互素的正整数m,n(m>n),其中m为奇数n为偶数,或者n为偶数m为奇数,并且满足:
poj 1305:Fermat vs. Pythagoras
题目链接:http://poj.org/problem?id=1305
解题思路:枚举m,n(1~sqrt(t)),找到满足定理条件的计数,然后将本原三元组乘以i(保证i*z在所给范围之内),得到的数用标记数组flag[]标记。
参考代码:
#include
#include
#include
#include
佩尔方程: 形如的不定方程。
通解(迭代公式):
,即
特解:暴力枚举或连分数法
,y++直到能被整除或带回原始佩尔方程成立
poj 1320 Street Numbers
题目链接:http://poj.org/problem?id=1320
解题思路: 1+2+…+n=(n+1)+…+m,即n(n+1)/2=(m-n)(m+n+1)/2,展开,(2m+1)^2-8n^2=1,令x=2m+1,y=n,x^2-8y^2=1这是典型的佩尔方程。
只要10组数据,枚举个特解x=3,y=1,拿递归公式求解即可。附代码:
#include
#include
#include
#include
hdu 3292(矩阵快速幂+佩尔方程) No more tricks, Mr Nanguo
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3292
解题思路: 分析易得佩尔方程,x^2-ny^2=1,暴力枚举出特解,矩阵快速幂取模得到通项,进而得到答案。
参考代码:
#include
#include
#include
#include