题意:(a, b, c)为a2+b2=c2的一个解,那么求gcd(a, b, c)=1的组数,并且a<b<c<=n,和不为解中所含数字的个数,比如在n等于10时,为1, 2, 7,9则输出4. 好了!把所用知识点说一下: 数论之勾股数组(毕达哥拉斯三元组) 本原勾股数组(a,b,c)(a为奇数,b偶数)都可由如下公式得出:a=st,b=(s²-t²)/2, c = (s²+t²)/2, 其中s>t>=1是没有公因数的奇数. 再把勾股数公式拿过来: 套路一: 当a为大于1的奇数…
勾股数组 设三元组(a,b,c)满足a^2 + b^2 = c^2的勾股数组,那么是否存在无穷多个勾股数组呢, 答案是肯定的,将三元组乘以d,可以得到新的三元组(da,db,dc) 即(da)^2 + (db)^2 = (dc)^2 --> (a^2+b^2) * d^2 =c^2 * d^2 d的取值是任意的,所以存在多个勾股数组 本源勾股数组 本源勾股数组是一个三元组(a,b,c),其中a,b,c只存在公因数1,且满足a^2 + b^2 = c^2 积累数据:下面的一些本源勾股数组 (3,4…
[题意] 给出三角形的三个边长,均是10^7以内的整数,问三角形的三个角的坐标是否能均是整数,输出其中任意一个解. [题解] 一开始想的是枚举一条边的横坐标,然后通过勾股定理以及算角度求出其他点的坐标,再判断是否符合条件. 亲测TLE 直到知道了本源勾股数组的构造方法... 每个本源勾股数组(a,b,c)满足a*a+b*b=c*c,其中a为奇数,b为偶数.. 枚举s,t(1<=t<s,且它们是没有公因数的奇数) a=st b=(s*s-t*t)/2 c=(s*s+t*t)/2 因为最大数c=(…
本原毕达哥拉斯三元组是由三个正整数x,y,z组成,且gcd(x,y,z)=1,x*x+y*y=z*z 对于所有的本原毕达哥拉斯三元组(a,b,c) (a*a+b*b=c*c,a与b必定奇偶互异,且c为奇数.这里我们设b为偶数) 则:和 a=st b=(s*s-t*t)/2 c=(s*s+t*t)/2 其中s>t>=1且gcd(s,t)=1 是一一对应的. 看看别人得证明: http://blog.csdn.net/loinus/article/details/7824841 看看我的证明 有了…
本题来自 Project Euler 第9题:https://projecteuler.net/problem=9 # Project Euler: Problem 9: Special Pythagorean triplet # A Pythagorean triplet is a set of three natural numbers, # a < b < c, for which, a**2 + b**2 = c**2 # For example, 3**2 + 4**2 = 9 +…
设不定方程:x^2+y^2=z^2若正整数三元组(x,y,z)满足上述方程,则称为毕达哥拉斯三元组.若gcd(x,y,z)=1,则称为本原的毕达哥拉斯三元组. 定理:正整数x,y,z构成一个本原的毕达哥拉斯三元组且y为偶数,当且仅当存在互素的正整数m,n(m>n),其中m,n的奇偶性不同,并且满足 x=m^2-n^2,y=2*m*n, z=m^2+n^2 本题目让你求的是,在n范围内(x,y,z<=n)本原的毕达哥拉斯三元组的个数,以及n以内且毕达哥拉斯三元组不涉及的数的个数. 举个样例:25…
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2027  Solved: 853[Submit][Status] Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input r Output 整点个数 Sample Input 4 Sample Output 4 HINT n<=2000 000 000 Source 這道題可用本原勾股數組解,由於本原…
主题链接: pid=1669">http://acm.fzu.edu.cn/problem.php?pid=1669 题目大意: 求满足以a.b为直角边,c为斜边,而且满足a + b + c <= L的直角三角形的个数. 思路: 勾股定理.a.b.c也就是本原毕达哥拉斯三元组,则满足: x = m^2 - n^2 y = 2*m*n z = m^2 + n^2 当中m > n,且若m为奇数,则n为偶数.若m为偶数.则n为奇数. 枚举m.n,然后将三元组乘以i倍.保证 i * (…
题意: 给定一个整数L(L<=1e12),计算(x,y,z)组的个数.其中x<y<z,x^2+y^2=z^2,gcd(x,y)==1,gcd(x,z)==1,gcd(y,z)==1. 思路: 以下的方法可用来找出勾股数.设m>n . m 和 n 均是正整数, a = m^2-n^2    b = 2mn   c = m^2+n^2 若 m 和 n 是互质,而且 m 和 n 其中有一个是偶数,计算出来的 (a, b, c) 就是素勾股数 然后我们需要的便是计算m,n互质 qie m,…
本题来自:http://pe.spiritzhang.com/index.php/2011-05-11-09-44-54/10-9a--b--c--1000a-b-c #include <stdio.h> int main() { int a,b,c; ;a<;a++) ;b<;b++) { c=-a-b; if(a*a+b*b==c*c) printf("%d %d %d\n",a,b,c); } ; } 感觉很多都做过的,代码还是慢慢的贴把…