主题链接:

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 * (x + y + z)在所给范围内(2 * m^2 + 2 * m*n <= L),

就能够求出全部满足条件的三元组。

AC代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std; bool flag[1001000]; int GCD(int a,int b)
{
if(b == 0)
return a;
return GCD(b,a%b);
} int main()
{
int N;
while(cin >> N)
{
int temp,m,n,i,ans,x,y,z;
ans = 0;
memset(flag,false,sizeof(flag));
temp = sqrt(N*1.0);
for(n = 1; n <= temp; ++n)
{
for(m = n+1; m <= temp; ++m)
{
if(2*m*m + 2*m*n > N)
break;
if((n&1) != (m&1))
{
if(GCD(m,n) == 1)
{
x = m*m - n*n;
y = 2*m*n;
z = m*m + n*n;
for(int i = 1; ; ++i)
{
if(i*(x+y+z) > N)
break;
ans++;
} }
}
}
}
cout << ans << endl;
} return 0;
}

版权声明:本文博主原创文章。博客,未经同意不得转载。

FZU1669 Right-angled Triangle【毕达哥拉斯三元组】的更多相关文章

  1. POJ 1305 Fermat vs. Pythagoras (毕达哥拉斯三元组)

    设不定方程:x^2+y^2=z^2若正整数三元组(x,y,z)满足上述方程,则称为毕达哥拉斯三元组.若gcd(x,y,z)=1,则称为本原的毕达哥拉斯三元组. 定理:正整数x,y,z构成一个本原的毕达 ...

  2. Fermat vs. Pythagoras POJ - 1305 (数论之勾股数组(毕达哥拉斯三元组))

    题意:(a, b, c)为a2+b2=c2的一个解,那么求gcd(a, b, c)=1的组数,并且a<b<c<=n,和不为解中所含数字的个数,比如在n等于10时,为1, 2, 7,9 ...

  3. 毕达哥拉斯三元组(勾股数组)poj1305

    本原毕达哥拉斯三元组是由三个正整数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为 ...

  4. Python练习题 037:Project Euler 009:毕达哥拉斯三元组之乘积

    本题来自 Project Euler 第9题:https://projecteuler.net/problem=9 # Project Euler: Problem 9: Special Pythag ...

  5. 欧拉计划之题目9:找出唯一的满足a + b + c = 1000的毕达哥拉斯三元组{a, b, c}

    本题来自:http://pe.spiritzhang.com/index.php/2011-05-11-09-44-54/10-9a--b--c--1000a-b-c #include <std ...

  6. Programming Erlang 学习笔记(一)

    入门 启动Shell 在cmd中输入命令”erl”,百分号(%)表示一个注释的开始,从百分号开始到这行结束的所有文本都被看做是注释. 一个完整的命令需要以一个句点和一个回车结束. 退出erlang的命 ...

  7. PE的一些水 3-50

    T3: 分解质因数. lalala T4: 暴模. 然而数学方法怎么搞?---->也就是怎么手算?... 于是看了一下讨论区...发现原来我的数学已经低于小学生水平了... 我们把答案abccb ...

  8. erlang note

    没有关于erlang interface ,继续寻找吧... --------------------------------------------------------------- erl - ...

  9. hdu5032 Always Cook Mushroom

    题意是这样,给定一个1000x1000的点阵.m组询问.每次询问一个由(0,0).(x,0)点一以及从原点出发的方向向量(a,b)构成的直角三角形包围的点的权值和. 点的权值是(x+A)(y+B),当 ...

随机推荐

  1. selenium通过WebDriverWait实现ajax测试

    selenium通过WebDriverWait实现ajax测试 AndroidDriver driver = new AndroidDriver(); driver.get("http:// ...

  2. java中的特殊字符集合

    JAVA中转义字符: 1.八进制转义序列:\ + 1到3位5数字:范围'\000'~'\377'       \0:空字符 2.Unicode转义字符:\u + 四个 十六进制数字:0~65535   ...

  3. thinkphp框架相关研究(一)

    小编最近开始正式研究thinkphp框架,在此写下研究的整个历程,从最最基本的搭建网站开始,一步步记录.希望对大家有所帮助. 1.菜鸟从下载框架到建站 参考网址:http://blog.csdn.ne ...

  4. 收藏的Android很好用的组件或者框架。

    收藏的Android很好用的组件或者框架. android框架  先说两个站点: http://www.androidviews.net/ 非常好的国外开源码站,就是訪问速度有点慢啊 http://w ...

  5. 利用h5标签在网页上播放音乐

    方案1: <embed src="等一分钟.mp3" id="aa"> <input type=button value=暂停 onclick ...

  6. Windows Phone开发(46):与Socket有个约会

    原文:Windows Phone开发(46):与Socket有个约会 不知道大家有没有"谈Socket色变"的经历?就像我一位朋友所说的,Socket这家伙啊,不得已而用之.哈,S ...

  7. Java的wait(), notify()和notifyAll()使用心得(转)

    本篇文章是对java的 wait(),notify(),notifyAll()进行了详细的分析介绍,需要的朋友参考下wait(),notify()和notifyAll()都是java.lang.Obj ...

  8. HiPAC高性能规则匹配算法之查找过程

    收到一封邮件,有位朋友认为我误解了nf-HiPAC.如此的一个高性能算法怎能被什么传统的hash,tree之类的胁迫.是啊.HiPAC是一个非常猛的算法.文档也比較少,这就更加添加了其神奇感,可是这决 ...

  9. 怎样获取android手机联系人并按字母展示(一)

    android提供了本地数据库的查询uri,能够查询出数据: 採用一个AsyncQueryHandler来进行查询, AsyncQueryHandler自己开启了线程来进行数据查询,非常方便 prot ...

  10. 小米2S TWRP 3.0.2-0 最新中文版本Recovery

    注意:此版本为合并分区后的twrp  小米2S 合并分区教程:http://forum.xda-developers.com/mi-2/orig-development/flashtools-mifl ...