大致题意
给一个 n (1<=n<=1e9) ,求其组成直角三角形的另外两条边,输出任意一组即可。
思路
结论题
除了 1,2 没用答案,其余的所有正整数满足以下勾股数结论。
可以记忆一下
代码
#include<bits/stdc++.h>
using namespace std;
#define maxn 100005
#define maxm 1000006
#define ll long long int
#define INF 0x3f3f3f3f
#define inc(i,l,r) for(int i=l;i<=r;i++)
#define dec(i,r,l) for(int i=r;i>=l;i--)
#define mem(a) memset(a,0,sizeof(a))
#define sqr(x) (x*x)
#define inf (ll)2e18+1
#define mod 998244353
#define ls x<<1
#define rs x<<1|1
int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return f*x;
}
int n;
int main()
{
n=read();
if(n==1||n==2){printf("-1");return 0;}
if(n%2==0){
n/=2;
ll b=1ll*n*n-1;
ll c=1ll*n*n+1;
printf("%lld %lld\n",b,c);
}
else {
ll b=(1ll*n*n -1)/2;
ll c=(1ll*n*n+1)/2;
printf("%lld %lld\n",b,c);
}
return 0;
}