主题链接:

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. 特殊的不定方程——毕达哥拉斯三元组(勾股数组)

    毕达哥拉斯三元组:若正整数x,y,z满足下x^2+y^2=z^2.满足这个方程的正整数三元组被称为毕达哥拉斯三元组. 本原毕达哥拉斯三元组:若gcd(x,y,a)=1,则正整数三元组被称为本原毕达哥拉 ...

  2. 数论 —— 毕达哥拉斯三元组

    [定义] 满足  的  三元组称为毕达哥拉斯三元组,当  时,称其为本原的. 毕达哥拉斯三元组,也称为勾股数. [性质] 由 x.y.z 构成的三元组 (x,y,z) ,其中 y 为偶数,那么由他们构 ...

  3. 7 特殊毕达哥拉斯三元组

    毕达哥拉斯三元组是三个自然数a < b < c组成的集合,并满足 a^ + b^ = c^ 例如,3^ + 4^ = 9 + 16 = 25 = 5^. 有且只有一个毕达哥拉斯三元组满足 ...

  4. 4-2毕达哥拉斯三元组

    一个直角三角形具有边长均为整数的三条边.直角三角形边长的这组整数值称为毕达哥拉斯三元组(中国称为勾股数).这三条边必须满足这样的关系:两条直角边的平方之和必须等于直角三角形斜边的平方.从键盘输入一个正 ...

  5. 毕达哥拉斯三元组及本原毕达哥拉斯三元组

    毕达哥拉斯定理:勾股定理又称商高定理.毕达哥拉斯定理,是平面几何中一个基本而重要的定理.勾股定理说明,平面上的直角三角形的两条直角边的长度(古称勾长.股长)的平方和等于斜边长(古称弦长)的平方.反之, ...

  6. 7-204 毕达哥拉斯三元组

    7-204 毕达哥拉斯三元组 一个直角三角形具有边长均为整数的三条边.直角三角形边长的这组整数值称为毕达哥拉斯三元组(中国称为勾股数).这三条边必须满足这样的关系:两条直角边的平方之和必须等于直角三角 ...

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

    勾股数(毕达哥拉斯三元组) 勾股数:可以构成一组直角三角形边长的三个正整数. eg: 3 4 5 勾股数的规律: 1)任何大于1的正奇数a=2k+1,其平方t=a^2仍为奇数,且将平方数拆成两个相邻的 ...

  8. 【POj1305】毕达哥拉斯三元组

    1.题目链接.这个题目是在求这样的一个问题:三个正整数x,y,z都小于等于N,这三个数组成一个三元组(x,y,z).其中,他们两两互质,也就是说(x,y,z)=1.并且x*x+y*y=z*z.求出这样 ...

  9. C语言求边长500以内的毕达哥拉斯三元组的个数

    #include<stdio.h> #include<math.h> #include<stdlib.h>int main() {int side1; //直角边1 ...

最新文章

  1. Linux_指令杂烩
  2. adb通信协议分析以及实现(二):adb服务进程发现设备
  3. Linux网络编程——I/O复用之poll函数
  4. 谈谈晋升-互联网民工篇
  5. Java:希望每天叫醒你的不是闹钟而是梦想!
  6. 社保基金入市规模或达3000亿元
  7. SonarLint各种提示的意思
  8. 使用ActionSupport验证登录
  9. 通达信 缠论分笔、分段DLL插件使用说明
  10. QImage转yuv420
  11. Android BT STACK BTU 和 HCI之间的消息传递
  12. 毕业第一站 | 北京游
  13. oracle hugepage设置,Linux系统下快速配置HugePages的完整步骤
  14. 为什么局域网 IP 通常以 192.168 开头而不是 1.2 或者 193.169 ?
  15. 多个tab页如何共享websocket
  16. 互联网快讯:京东公布“双11”节奏;猿辅导、掌门教育布局素质教育
  17. Ubuntu 微信QQ企业微信不能输入中文
  18. 数据分析《令人心动的offer2》—你心动了吗?
  19. 生而为人,请务必善良
  20. 软件测试人还知道大名鼎鼎的compuware性能调优工具吗?该公司撤离中国!

热门文章

  1. 用Vue来实现音乐播放器(十六):滚动列表的实现
  2. Spark在Windows下的环境搭建
  3. P3321 [SDOI2015]序列统计
  4. log4j WARN 的解决办法
  5. git提交代码遇到fatal: unable to access
  6. Python向来以慢著称,为啥Instagram却唯独钟爱它?
  7. Java EE (11) - 影响性能的因素
  8. 利用大数据,你将会购买更多的东西
  9. 玩Android的第一天
  10. Android 中文API(86)——ResourceCursorAdapter