毕达哥拉斯三元组(勾股数组)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为奇数。这里我们设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
看看我的证明


有了这个定理就这题就很好做了。
| Time Limit: 2000MS | Memory Limit: 10000K | |
| Total Submissions: 1456 | Accepted: 848 |
Description
This problem deals with computing quantities relating to part of Fermat's Last Theorem: that there are no integer solutions of a^n + b^n = c^n for n > 2.
Given a positive integer N, you are to write a program that computes two quantities regarding the solution of x^2 + y^2 = z^2, where x, y, and z are constrained to be positive integers less than or equal to N. You are to compute the number of triples (x,y,z) such that x < y < z, and they are relatively prime, i.e., have no common divisor larger than 1. You are also to compute the number of values 0 < p <= N such that p is not part of any triple (not just relatively prime triples).
Input
Output
Sample Input
10
25
100
Sample Output
1 4
4 9
16 27
//
// main.cpp
// poj1305
//
// Created by 陈加寿 on 15/11/30.
// Copyright (c) 2015年 陈加寿. All rights reserved.
// #include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std; int mark[]; long long gcd(long long a,long long b)
{
if(b==) return a;
return gcd(b,a%b);
} int main(int argc, const char * argv[]) {
int n;
while(cin>>n)
{
memset(mark,,sizeof(mark));
int cnt=;
for(long long i=;;i+=)
{
long long a,b,c;
if( (i*i+(i+)*(i+))/ >n ) break; for(long long j=i+;;j+=)
{
if(gcd(i,j)==)
{
c=(i*i+j*j)/;
b=(j*j-i*i)/;
a=i*j;
if(c>n) break;
cnt++;
for(long long k=;k*c<=n;k++)
{
mark[a*k]=;
mark[b*k]=;
mark[c*k]=;
}
}
}
}
int ans=;
for(int i=;i<=n;i++)
if(mark[i]==) ans++;
cout<<cnt<<" "<<ans<<endl;
}
return ;
}
毕达哥拉斯三元组(勾股数组)poj1305的更多相关文章
- 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 ...
- 勾股数组及其应用uva106
勾股数组 设三元组(a,b,c)满足a^2 + b^2 = c^2的勾股数组,那么是否存在无穷多个勾股数组呢, 答案是肯定的,将三元组乘以d,可以得到新的三元组(da,db,dc) 即(da)^2 + ...
- URAL 2032 - Conspiracy Theory and Rebranding【本源勾股数组】
[题意] 给出三角形的三个边长,均是10^7以内的整数,问三角形的三个角的坐标是否能均是整数,输出其中任意一个解. [题解] 一开始想的是枚举一条边的横坐标,然后通过勾股定理以及算角度求出其他点的坐标 ...
- Python练习题 037:Project Euler 009:毕达哥拉斯三元组之乘积
本题来自 Project Euler 第9题:https://projecteuler.net/problem=9 # Project Euler: Problem 9: Special Pythag ...
- POJ 1305 Fermat vs. Pythagoras (毕达哥拉斯三元组)
设不定方程:x^2+y^2=z^2若正整数三元组(x,y,z)满足上述方程,则称为毕达哥拉斯三元组.若gcd(x,y,z)=1,则称为本原的毕达哥拉斯三元组. 定理:正整数x,y,z构成一个本原的毕达 ...
- bzoj 1041: [HAOI2008]圆上的整点 本原勾股數組
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 853[Submit][Stat ...
- FZU1669 Right-angled Triangle【毕达哥拉斯三元组】
主题链接: pid=1669">http://acm.fzu.edu.cn/problem.php?pid=1669 题目大意: 求满足以a.b为直角边,c为斜边,而且满足a + b ...
- hdu 3939(勾股+容斥)
题意: 给定一个整数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. ...
- 欧拉计划之题目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 ...
随机推荐
- docker下载ubuntu并进行修改后生成新的镜像提交
一 docker pull ubuntu ,先下载下来一个镜像, 或者 从本地启动一个镜像 docker run -i -t ubuntu /bin/bash 二 进入一定更新操作 # shell ...
- 使用JProfiler分析定位java内存泄露memory leak
使用jprofiler远程profile JBoss应用服务器 项目中发现JBoss出现内存泄露, 从2G一直涨到3.5G左右 开始考虑使用jmap dump出内存来, 在用jhap打开浏览器分析. ...
- 【重点突破】—— React实现富文本编辑器
前言:富文本编辑器Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器. 一.安装插件 react-draft-wysiwyg: 文本编辑器插件 dra ...
- 转:如何查看MyEclipse包含的Eclipse的版本号
如何查看MyEclipse包含的Eclipse的版本号 博客分类: 技术 myeclipseeclipse 说到Eclipse的版本号,可能只有在安装插件时才会需要到,有人就曾在安装svn时为了找到 ...
- const 使用方法具体解释
const使用方法具体解释 面向对象是C++的重要特性. 可是c++在c的基础上新添加的几点优化也是非常耀眼的 就const直接能够代替c中的#define 下面几点非常重要,学不好后果也也非常严重 ...
- node - 写返回mime类型
何为mime类型? mime.json { ".323":"text/h323" , ".3gp":"video/3gpp&qu ...
- Linux经常使用命令(八) - touch
linux的touch命令不经常使用, 一般用来改动文件时间戳, 或者新建一个不存在的文件. 1. 命令格式: touch [选项] 文件 2. 命令參数: -a 仅仅更改存取时间. -c ...
- Django内建模版标签和过滤器
第四章列出了许多的常用内建模板标签和过滤器.然而,Django自带了更多的内建模板标签及过滤器.这章附录列出了截止到编写本书时,Django所包含的各个内建模板标签和过滤器,但是,新的标签是会被定期地 ...
- 为什么JVM指定-Xmx参数后占用内存会变少?
嘿,你能顺便过来看看这个奇怪的事情吗?” 就是让我提供支持的这个事情,驱使我写下这篇博客的.这个特殊的问题是,不同工具给出的可用内存的报告是不一样的. 简而言之,工程师正在调查特定应用程序的内存使用. ...
- Jmeter3.0-插件管理
本文转自推酷:http://www.tuicool.com/articles/UV7fI3V JMeter ,老牌,开源,轻量,Apache基金会的顶级项目,光是这些关键字就足以让大量用户将其纳入自己 ...