Pythagorean Triples

题目链接:

http://codeforces.com/contest/707/problem/C

Description


```
Katya studies in a fifth grade. Recently her class studied right triangles and the Pythagorean theorem. It appeared, that there are triples of positive integers such that you can construct a right triangle with segments of lengths corresponding to triple. Such triples are called Pythagorean triples.

For example, triples (3, 4, 5), (5, 12, 13) and (6, 8, 10) are Pythagorean triples.

Here Katya wondered if she can specify the length of some side of right triangle and find any Pythagorean triple corresponding to such length? Note that the side which length is specified can be a cathetus as well as hypotenuse.

Katya had no problems with completing this task. Will you do the same?

</big>

##Input
<big>

The only line of the input contains single integer n (1 ≤ n ≤ 109) — the length of some side of a right triangle.

</big>

##Output
<big>

Print two integers m and k (1 ≤ m, k ≤ 1018), such that n, m and k form a Pythagorean triple, in the only line.

In case if there is no any Pythagorean triple containing integer n, print  - 1 in the only line. If there are many answers, print any of them.

</big>

##Examples
<big>
input
3
output
4 5
input
6
output
8 10
input
1
output
-1
input
17
output
144 145
input
67
output
2244 2245
</big> ##Source
<big>
Codeforces Round #368 (Div. 2)
</big> <br/>
##题意:
<big>
构造一个直角三角形以N作为一条边长.(直角边和斜边皆可)
</big> <br/>
##题解:
<big>
N作为直角边时,N^2为两个平方数的差:
易知任意两平方数之差必定为奇数或者是4的倍数. [参考](http://www.cnblogs.com/Sunshine-tcf/p/5698800.html)
N作为斜边时,N^2为两个平方数的和:
由于N的规模较小,可以直接枚举找到 a^2+b^2 = N^2. (枚举规模sqrt(n))
<br/>
upd:这个问题其实有[公式](http://www.zybang.com/question/712e6230d81ecf844ef145786bf6918a.html):
奇数:(2n+1, 2n^2+2n, 2n^2+2n+1)
偶数:(2n, n^2-1, n^2+1)
</big> <br/>
##代码:
``` cpp
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <stack>
#include <vector>
#include <list>
#define LL long long
#define eps 1e-8
#define maxn 101000
#define mod 100000007
#define inf 0x3f3f3f3f
#define mid(a,b) ((a+b)>>1)
#define IN freopen("in.txt","r",stdin);
using namespace std; int main(int argc, char const *argv[])
{
//IN; LL n;
while(scanf("%I64d", &n) != EOF)
{
n = n * n;
if(n!=1 && n!=4) {
if(n & 1) {
LL cur = (n - 1) >> 1;
printf("%I64d %I64d\n", cur,cur+1);
continue;
}
if(n % 4 == 0) {
LL cur = (n - 4) >> 2;
printf("%I64d %I64d\n", cur,cur+2);
continue;
}
} bool flag = 0;
for(LL i=1; i*i<=n; i++) {
LL cur = n - i * i;
if(cur < 1) continue;
LL sqt = (LL)sqrt(cur);
if(sqt * sqt == cur) {
printf("%I64d %I64d\n", i, sqt);
flag = 1;
break;
}
} if(!flag) printf("-1\n");
} return 0;
}

Codeforces Round #368 (Div. 2) C. Pythagorean Triples(数学)的更多相关文章

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

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

  2. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  3. Codeforces Round #368 (Div. 2) B. Bakery (模拟)

    Bakery 题目链接: http://codeforces.com/contest/707/problem/B Description Masha wants to open her own bak ...

  4. Codeforces Round #368 (Div. 2) A. Brain's Photos (水题)

    Brain's Photos 题目链接: http://codeforces.com/contest/707/problem/A Description Small, but very brave, ...

  5. 暴力 Codeforces Round #183 (Div. 2) A. Pythagorean Theorem II

    题目传送门 /* 暴力:O (n^2) */ #include <cstdio> #include <algorithm> #include <cstring> # ...

  6. Codeforces Round #368 (Div. 2) C

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

  7. Codeforces Round #368 (Div. 2)A B C 水 图 数学

    A. Brain's Photos time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  8. Codeforces Round #368 (Div. 2) A , B , C

    A. Brain's Photos time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  9. Pythagorean Triples(Codeforces Round #368 (Div. 2) + 构建直角三角形)

    题目链接: https://codeforces.com/contest/707/problem/C 题目: 题意: 告诉你直角三角形的一条边,要你输出另外两条边. 思路: 我们容易发现除2外的所有素 ...

随机推荐

  1. cocoStudio UI编辑器 学习总结

    一.控件 控件基类 UIWidget:所有UI控件的基类 addChild:添加UIWidget类型的节点 addRenderer:添加CCNode类型的节点 所有UIWidget,都可以设置成触摸s ...

  2. 最大熵模型 Maximum Entropy Model

    熵的概念在统计学习与机器学习中真是很重要,熵的介绍在这里:信息熵 Information Theory .今天的主题是最大熵模型(Maximum Entropy Model,以下简称MaxEnt),M ...

  3. vim 大小写转化命令

    vim中大小写转化的命令是<blockquote>gu或者gU</blockquote>形象一点的解释就是小u意味着转为小写:大U意味着转为大写. 剩下的就是对这两个命令的限定 ...

  4. MySQL server has gone away 的解决方法

    原文引用至:http://www.jb51.net/article/23781.htm,感谢! 可能原因:1.发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因 ...

  5. hive部署手册

    安装环境: 机器 只需要安装一台机器      操作系统:Ubuntu 11.04 64操作系统      hadoop:版本是1.0.2,安装在/usr/local/hadoop      sun ...

  6. Android MVPR 架构模式

    最近我在尝试让 Google 的 IO App 变得可单元测试,我这样做的其中一个原因是验证 Freeman 和 Pryce 在引用中对单元测试的总结.即使现在我还是没有把 IOSched 中的任何一 ...

  7. ACE_SOCK

    该类属中的类都位于ACE_SOCK之下:它提供使用BSD socket编程接口的Internet域和UNIX域协议族的接口.这个类属中的类被进一步划分为: Dgram类, Acceptor类和Stre ...

  8. js画线

    <body> <div id="main"> </div> <div id="fd" style="filt ...

  9. slowhttps安装及使用心得

    运行及安装环境,kali. 到googlecode上下载安装包,cd到安装目录./configure 运行完毕后输入make 结束后make install 简单点就直接apt-get install ...

  10. 爬虫技术之——bloom filter(含java代码)

    在爬虫系统中,在内存中维护着两个关于URL的队列,ToDo队列和Visited队列,ToDo队列存放的是爬虫从已经爬取的网页中解析出来的即将爬取的URL,但是网页是互联的,很可能解析出来的URL是已经 ...