- 题意:给你三角形的一条边的长度,问你是否存在有这条边的勾股数,如果存在,输出另外两个数,否则输出-1
- 类型:数学
- 分析:经过分析,可以发现当a>1并且a为奇数的时候,把a分解成一半 n=(a-1)/2;则b=2*n*(n+1),c=2*n*(n+1)+1;
- 当a>2并且a为偶数的时候,把a分解成一半 n=a/2;则b=n*n-1,c=n*n+1;
勾股数要求a是偶数时需要a>4,因为在勾股数中a是最小的,但是题目给出的是任意条边,所以a>2就可以了。
//
// main.cpp
// Richard
//
// Created by 邵金杰 on 16/8/21.
// Copyright © 2016年 邵金杰. All rights reserved.
//
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long LL;
int main()
{
LL a;
while(cin>>a)
{
LL x;
if(a%2==1&&a>1) x=(a-1)/2,cout<<2*x*x+2*x<<" "<<2*x*x+2*x+1<<endl;
else if(a%2==0&&a>2) x=a/2,cout<<x*x-1<<" "<<x*x+1<<endl;
else cout<<"-1"<<endl;
}
return 0;
}