题目分析
题意
输入一条边长n,若能构成直角三角形输出任意的一组另外两条边长,否则输出-1。
思路
若边长n小于3不能构成直角三角形。若大于等于3,分两种情况:
1)n为奇数
x=(n-1)/2;
另外两条边为m=2*x*x+2*x;k=2*x*x+2*x+1;
2)n为偶数
x=n/2;
另外两条边为m=x*x-1;k=x*x+1;
代码
#include<iostream>
#include<stdio.h>
using namespace std;
#define ll long long
ll n,m,k,x;
int main(){
while(cin>>n){
if(n<3){
cout<<"-1"<<endl;
continue;
}
if(n&1){
x=(n-1)/2;
m=2*x*x+2*x;
k=2*x*x+2*x+1;
}else{
x=n/2;
m=x*x-1;
k=x*x+1;
}
cout<<m<<" "<<k<<endl;
}
return 0;
}