题意:给你一条边L,求输出另外两条能与它构成直角三角形的边。如不存在输出-1
(L<=1e9)
思路:
当L为大于1的奇数,令这条边为直角边,则另外两条边为b,c则 , (c−b)(c+b)=L∗L−>令c−b=1−>c=(L∗L+1)/2
当L为大于2的偶数2∗n时,b=n2−1,c=n2+1
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <cmath>
#include <ctime>
#include <vector>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 1e18
#define inf -0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mem0(a) memset(a,0,sizeof(a))
#define mem1(a) memset(a,-1,sizeof(a))
#define mem(a, b) memset(a, b, sizeof(a))
vector<int>tmp;
int main(){
long long n;
scanf("%lld",&n);
if(n==1||n==2)
printf("-1\n");
else{
if(n==4){
printf("3 5\n");
return 0;
}
if(n&1)
printf("%lld %lld\n",(n*n+1)/2,(n*n+1)/2-1);
else
printf("%lld %lld\n",n*n/4-1,n*n/4+1);
}
return 0;
}