题目链接:http://codeforces.com/contest/707/problem/C

题目大意:给你一条边,问你能否构造一个包含这条边的直角三角形且该直角三角形三条边都为整数,能则输出另外两条边,否则输出-1“”。

解题思路:下面是我从作业帮上找的- -,

利用平方差公式
令斜边为c,直角边为a、b,且b为最短边
c²-a²=(c+a)(c-a)
因此(c+a)(c-a)是完全平方数,且(c-a)是(c+a)的一个因数
1、如果(c-a)=1,则(c+a)是完全平方数(最短边是任意大于2的奇数)
例如:5、4、3;13、12、5;25、24、7;41、40、9;...
2、如果(c-a)=2,则(c+a)/2是完全平方数(最短边是任意大于2的偶数)
例如:5、3、4;10、8、6;17、15、8;26、24、10;...
即:最短边是任意一个大于2的正整数,都可以配成一个三边都是整数的直角三角形.

当直角边b已知,b<=2时无解,接下来分两种情况考虑:①b为奇数,因c-a=1得c=a+1,所以(c-a)*(c+a)=2*a+1=b*b,可得a=(b*b-1)/2.

                         ②b为偶数,因c-a=2得c=a+2,所以(c-a)*(c+a)=4*(a+1)=b*b,可得a=b*b/4-1.

代码:

 #include<iostream>
using namespace std;
const int N=1e9+;
typedef long long LL; int main(){
LL b;
cin>>b;
if(b>){
LL a;
if(b%){
a=(b*b-)/;
cout<<a<<" "<<a+<<endl;
}
else{
a=b*b/-;
cout<<a<<" "<<a+<<endl;
}
}
else
puts("-1");
return ;
}

Codeforces 707C Pythagorean Triples(构造三条边都为整数的直角三角形)的更多相关文章

  1. CodeForces 707C Pythagorean Triples

    数学,构造. 这题比较有意思,一开始没发现结论写了一个最坏复杂度为$O({10^9})$暴力居然能$AC$,正因为如此,我才发现了规律. 一开始是这么想的: 先假设$n$为直角边,设斜边长度为$c$, ...

  2. 【数学】Codeforces 707C Pythagorean Triples

    题目链接: http://codeforces.com/problemset/problem/707/C 题目大意: 给你一个数,构造其余两个勾股数.任意一组答案即可,没法构造输出-1. 答案long ...

  3. CodeForces 707C Pythagorean Triples (数论)

    题意:给定一个数n,问你其他两边,能够组成直角三角形. 析:这是一个数论题. 如果 n 是奇数,那么那两边就是 (n*n-1)/2 和 (n*n+1)/2. 如果 n 是偶数,那么那两边就是 (n/2 ...

  4. Codeforces 707C. Pythagorean Triples-推公式的数学题

    两道C题题解,能推出来公式简直是无敌. http://codeforces.com/problemset/problem/707/C codeforces707C. Pythagorean Tripl ...

  5. codeforces 707C C. Pythagorean Triples(数学)

    题目链接: C. Pythagorean Triples time limit per test 1 second memory limit per test 256 megabytes input ...

  6. Codeforces Round #368 (Div. 2) C. Pythagorean Triples(数学)

    Pythagorean Triples 题目链接: http://codeforces.com/contest/707/problem/C Description Katya studies in a ...

  7. Pythagorean Triples毕达哥斯拉三角(数学思维+构造)

    Description Katya studies in a fifth grade. Recently her class studied right triangles and the Pytha ...

  8. Codeforces Round #368 (Div. 2) C. Pythagorean Triples 数学

    C. Pythagorean Triples 题目连接: http://www.codeforces.com/contest/707/problem/C Description Katya studi ...

  9. Pythagorean Triples 707C

    Katya studies in a fifth grade. Recently her class studied right triangles and the Pythagorean theor ...

随机推荐

  1. C++中typedef和#define简介

    本文基于<C++ Primer(第5版)>和网上博客,整理而成. 一.类型别名 类型别名是一个名字,它是某种类型的同义词,有两种方法可用于定义类型别名:typedef.using. 1.关 ...

  2. AOJ.720 丢失的学妹

    缺失的学妹 考察点 STL MAP Time Mem Len Lang 3.81s 39.1MB 0.68K G++ 题意分析 给出妹子学号的个数n,给出n个学号,和n-1个学号,求在n学号中那个没有 ...

  3. Codechef MARCH14 GERALD07加强版

    强制在线不代表不能预处理! 考虑暴力怎么干? 开始n个联通块.now=n 不断加入边,如果连接两个联通块,--now 否则不动. 后者的前提是和[l,id-1]的边构成环 所以,我们考虑每个[l,r] ...

  4. SELECT LAST_INSERT_ID() 的使用和注意事项

    SELECT LAST_INSERT_ID() 的使用和注意事项 尊重个人劳动成果,转载请注明出处: http://blog.csdn.net/czd3355/article/details/7130 ...

  5. sublime Text 块编辑方法

    比如我们要把SQL语句中的多表查询结果封装成pojo SQL: SELECT a.id, a.title, a.sell_point, a.price, a.image, b.`name` categ ...

  6. bzoj 4724 [POI2017]Podzielno 二分+模拟

    [POI2017]Podzielno Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 364  Solved: 160[Submit][Status][ ...

  7. 【Codeforces370E】Summer Reading [构造]

    Summer Reading Time Limit: 20 Sec  Memory Limit: 512 MB Description Input Output Sample Input 7 0 1 ...

  8. 【BZOJ2882】工艺 [SAM]

    工艺 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 小敏和小燕是一对好朋友. 他们正在玩一 ...

  9. http状态响应码对照表

    1xx - 信息提示   这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应.    ·0 - 本地响应成功.   · 100 - Continue 初始的请求已 ...

  10. perl 在win下输出中文乱码问题

    use utf8; my $name = '你好'; binmode(STDOUT, ":encoding(gbk)"); print $name,"\n"; ...