特殊不定方程的应用,跟普通的不定方程一样,还是要依靠扩展欧几里德来解决,,可能方程有点偏,

题意,给一个正数N,求小于等于正数N的树中,本原的毕达哥斯拉三元组的个数  和  毕达哥斯拉三元组不涉及N以内的数的个数

解析前小广告!总是做算法,不如来个陶冶情操的文章一篇: http://www.sanwen.net/subject/3628849/

解析:

本原毕达哥斯拉三元组 :

x = m^2 - n^2

y = 2 * m * n;

i * z = m^2 + n^2

其中m >n,且n,m两个数的奇偶性必须不同;即m为奇数 n为偶数,或者m为偶数 n为奇数

如此只需要对n,m,进行枚举即可,然后讲三元组乘以i 并且要保证 i*z在n范围内,这样就能够够求出所有的毕达哥斯拉三元组了、

#include<iostream>
#include<cstdio>
#include<list>
#include<algorithm>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<cmath>
#include<memory.h>
#include<set>#define ll long long#define eps 1e-8#define inf 0xfffffff//const ll INF = 1ll<<61;using namespace std;//vector<pair<int,int> > G;
//typedef pair<int,int > P;
//vector<pair<int,int> > ::iterator iter;
//
//map<ll,int >mp;
//map<ll,int >::iterator p;bool vis[1000000 + 5];
int ans1,ans2;void init() {memset(vis,false,sizeof(vis));ans1 = ans2 = 0;
}ll exgcd(ll a, ll b, ll &x0, ll &y0)  {if(!b) {x0 = 1; y0 = 0;return a;}ll r = exgcd(b, a%b, y0, x0);y0 -= a/b*x0;return r;
}void cal(int tmpn) {int tmp,i,x,y,z;tmp = sqrt(tmpn * 1.000);for(int n=1;n<=tmp;n++) {for(int m=n+1;m<=tmp;m++) {if(m * m + n * n > tmpn)break;//为了看方程方便 所以设变量为 n,m if(n%2 != m%2) {ll x0,y0;if(exgcd(m,n,x0,y0) == 1) {x = m * m - n * n;y = 2 * m * n;z = m * m + n * n;ans1++;for(int i=1;;i++) {if(i * z > tmpn)break;vis[i * x] = true;vis[i * y] = true;vis[i * z] = true;}}}}}
}int main() {int n;while(scanf("%d",&n) == 1) {init();cal(n);for(int i=1;i<=n;i++) if(!vis[i])ans2++;printf("%d %d\n",ans1,ans2);}return EXIT_SUCCESS;
}

POJ1305 UVA106 Fermat vs. Pythagoras 毕达哥斯拉三元组 特殊的不定方程相关推荐

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

    毕达哥斯拉三元组,即勾股数组. 勾股数组参考资料:http://blog.csdn.net/magicnumber/article/details/6410043 s的取值范围:3≤s≤√(2n-1) ...

  2. 数论 毕达哥斯拉三元组 + 欧拉函数 + 容斥原理 hdu3939

    涉及的知识点还是挺多的,这题时间特卡.... 1.毕达哥斯拉三元组: 三元组(a,b,c),其中a,b,c无公因数,且满足a² +b² =c². a为奇数,b为偶数,c为奇数 可以得到如下勾股数组定理 ...

  3. FZU1669 Right-angled Triangle 本原毕达哥斯拉三元组 特殊不定方程的应用

    毕达哥斯拉定理其实就是勾股定理,x^2 + y^2 = z^2,满足这个方程的正整数三元组被成为毕达哥斯拉三元组 定理:正整数x,y,z,构成一个本原毕达哥斯拉三元组且y为偶数,当且仅当存在互素的正整 ...

  4. 毕达哥斯拉三元组poj1305

    对于方程:,满足条件:x,y,z两两互素的正整数解为: ,其中m>n>0,gcd(m,n)=1,m,n一奇一偶. 典型题目:POJ1305

  5. JAVA:实现是否为Pythagorean Triples毕达哥斯拉三角数算法(附完整源码)

    JAVA:实现是否为Pythagorean Triples毕达哥斯拉三角数算法 package com.thealgorithms.maths;public class PythagoreanTrip ...

  6. POJ 1305 Fermat vs. Pythagoras【勾股数】

    题意: 让你找出1 到 n 之间所有可以构成 x^2 +y^2 =z^2 的个数,且 x,y,z互质. 分析: 数论中有本原勾股数组的公式x=2*s*t,y=s*s-t*t,z=s*s+t*t; 其中 ...

  7. 数论基础-小白学算法必学(一天一夜的成果)万字

    整数部分 前言 一.最大取整函数 二.丢番图逼近 三.和与积 四.整除性 五.整数的表示法和运算 五.素数和最大公因子 六.欧几里得算法 七.算术基本定理 八.因子分解法和费马数 九.线性丢番图方程 ...

  8. 【更新完毕】《算法竞赛中的初等数论》(ACM / OI / MO)前言、后记、目录索引(十五万字符的数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 <算法竞赛中的初等数论>的全部内容的 Portable Document Format 版 ...

  9. 震撼!17 个改变世界的数学公式...

    来源:量子位 到底是什么样的公式,能让"钢铁侠"马斯克下场点赞? 答: 它们改变了世界. 被给予如此高度评价的公式,一共包含17个: 而且这位博主发布推文才短短数小时,便揽获了19 ...

最新文章

  1. 3D 视觉 相关知识-SLAM框架-常见方案对比
  2. AI现在能教你画画了
  3. 表单的重复提交问题解决方案
  4. Android如何把 内容复制到剪贴板
  5. 需求调研计划_干货!如何做好一个BI项目的规划和需求定义?
  6. Linux命令行上传文件到百度网盘
  7. android源码包下载
  8. bootstrap 导航菜单 折叠位置_python测试开发django44.xadmin自定义菜单项
  9. kill apache
  10. Oracle Sql关于case-when,if-then,decode
  11. vscode中微信小程序的代码智能提示
  12. 【建模算法】基于粒子群算法求解TSP问题(Python实现)
  13. php 滑块验证,实现一个滑块验证功能
  14. 宝妈群体又一次遭受职场歧视?公司要求怀孕即离职?或许抖音小店是突破口
  15. 疯狂游戏-研发一面-校招面经
  16. 编程语言介绍以及特点
  17. 如何使用MDK建立STM32H7双核编译工程
  18. 计算机派位志愿填报技巧,小升初电脑大派位:大派位操作流程及志愿填报
  19. 七周成为数据分析师 | 统计学
  20. SQL宝典(中文版) 高清PDF版下载

热门文章

  1. 美国西北大学计算机学院教授,美国西北大学化学院院长Teri W. Odom教授访问玛丽女王工程学院...
  2. 用 Python 制作 NFT 区块链作品(上)
  3. 虚拟机ssh免密登录报错(WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)
  4. 大学python程序题题库海师_中国大学MOOC的APP2021年Python编程基础题目及答案
  5. 2022年春节在家待几天?
  6. k8s: the connection to the server 192.168.2.94:6443 was refused 解决方法
  7. 东方博易OJ——1006 - 【入门】打印星号三角形
  8. keygen文件被小红伞自动删除的解决办法
  9. Java热替换,不出现classcastException
  10. matasploit框架漏洞利用