2016_4_16/G [codeforces] C

来源:互联网 发布:淘宝网卖家中心登录 编辑:程序博客网 时间:2024/05/20 03:45

已知直角三角形一条边,求另外两条边;


长见识了 原来有一种情况的直角三角形的 两条直角边是只差1或者2的;

引用一下他们的博客:


对于直角三角形△ABC,如图:


我们知道的是


因为题目说如果题目存在多种解,输出任何一个就可以了,所以我们不妨假设输入的n是一条直角边的长度,那么


根据平方差公式可得


那么,这个时候,我们要求解的就是a,b

于是乎,我们分类讨论即可


枉我一直用角度和一条边去求另一条边,枚举寻找,这样确实不够精确

长见识了

#include <iostream>#include<cstring>#include<cmath>#include<cstdio>using namespace std;const int maxn=1000+5;int main(){    long long  n;    scanf("%I64d",&n);    if(n==1||n==2)        puts("-1");    else if(n*n%2)        printf("%I64d %I64d\n",(n*n-1)/2,(n*n+1)/2);    else        printf("%I64d %I64d\n",(n*n/2-2)/2,(n*n/2+2)/2);    return 0;}




0 0