标签:
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?
Input
The only line of the input contains single integer
side
of a right triangle.
Output
Print two integers
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.
Examples
input
3
output
4 5
input
6
output
8 10
input
1
output
-1
input
17
output
144 145
input
67
output
2244 2245
题目大意:
给你一个数,让你判断这个数是不是能够满足勾股数,如果满足输出另外两条边,否则输出
解题思路:
因为让我们输出任意一组数据,所以我们特判一下就行了:
假设是奇数的话:那么是
假设是偶数的话:那么是
/**
2016 - 08 - 19 上午
Author: ITAK
Motto:
今日的我要超越昨日的我,明日的我要胜过今日的我,
以创作出更好的代码为目标,不断地超越自己。
**/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const int INF = 1e9+5;
const int MAXN = 1e5+5;
const int MOD = 1e9+7;
const double eps = 1e-7;
const double PI = acos(-1);
using namespace std;
LL Scan_LL()///输入外挂
{
LL res=0,ch,flag=0;
if((ch=getchar())==‘-‘)
flag=1;
else if(ch>=‘0‘&&ch<=‘9‘)
res=ch-‘0‘;
while((ch=getchar())>=‘0‘&&ch<=‘9‘)
res=res*10+ch-‘0‘;
return flag?-res:res;
}
int Scan_Int()///输入外挂
{
int res=0,ch,flag=0;
if((ch=getchar())==‘-‘)
flag=1;
else if(ch>=‘0‘&&ch<=‘9‘)
res=ch-‘0‘;
while((ch=getchar())>=‘0‘&&ch<=‘9‘)
res=res*10+ch-‘0‘;
return flag?-res:res;
}
void Out(LL a)///输出外挂
{
if(a>9)
Out(a/10);
putchar(a%10+‘0‘);
}
int main()
{
LL n;
while(cin>>n)
{
if(n == 1LL || n==2LL)
{
puts("-1");
continue;
}
if(n & 1)
{
LL tmp = (n-1)/2;
cout<<2*tmp*tmp+2*tmp<<" "<<2*tmp*tmp+2*tmp+1<<endl;
}
else
{
LL tmp = n*n/4;
if(tmp <= 1)
puts("-1");
else
cout<<tmp-1<<" "<<tmp+1<<endl;
}
}
return 0;
}
Codeforces 707 C. Pythagorean Triples(找规律)——Codeforces Round #368 (Div. 2)
标签:
原文地址:http://blog.csdn.net/qingshui23/article/details/52266074