牛客练习赛51 C 勾股定理https://ac.nowcoder.com/acm/contest/1083/C

题目描述

给出直角三角形其中一条边的长度n,你的任务是构造剩下的两条边,使这三条边能构成一个直角三角形。

输入描述:

一个整数n。

输出描述:

另外两条边b,c。答案不唯一,只要输出任意一组即为合理,如果无法构造请输出-1。

示例1

输入

复制

3

输出

复制

4 5

示例2

输入

复制

4

输出

复制

3 5

备注:

0<=n<=1e9

1<=b,c<=1e18

n,b,c均为整数

ac代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,b,c,t;
int main(){
   cin>>n;
   if(n>1&&n%2==1){
      t=(n-1)/2;
       b=2*t*t+2*t;
       c=b+1;
       cout<<b<<" "<<c<<endl;
   }
   else if(n>=4&&n%2==0){
      t=n/2;
      b=t*t-1;
      c=t*t+1;
      cout<<b<<" "<<c<<endl;
   }
     else
        cout<<"-1"<<endl;
    return 0;

}

思路:

记住就好了

原文地址:https://www.cnblogs.com/lusiqi/p/11478989.html