题解:CF407A Triangle
题目传送门
题意
有一个直角三角形的两条直角边长度分别为
思路
这题数据很小,考虑一下暴力枚举。时间复杂度为 YES 和坐标,没有就直接输出 NO。
code
#include<bits/stdc++.h>、、万能头
using namespace std;
int a,b,x,y,i,j,k,g;
int gcd(int x,int y)//不用内部函数,从我做起
{
if(y==0)return x;
return gcd(y,x%y);
}
int main()
{
scanf("%d%d",&a,&b);//时间较少
for(x=1;x<a;x++)
{
y=int(sqrt(a*a-x*x)+0.01);
if(x*x+y*y==a*a)
{
g=gcd(x,y);
x/=g;
y/=g;
k=int(sqrt(b*b/(y*y+x*x))+0.01);
if(k*k*(x*x+y*y)==b*b)
{
if(g*x!=-k*y&&g*y!=k*x)
{
cout<<"YES"<<endl;
cout<<"0 0"<<endl;
cout<<g*x<<" "<<g*y<<endl;
cout<<-k*y<<" "<<k*x<<endl;
return 0;
}
}
x*=g;
}
}
cout<<"NO"<<endl;
return 0;
}