题目大意:给你一个直角三角形的两个legs(直角边)。问你是否能够找到一种 三个点都是整数的方案。
方案:设左高为i,底为t1,右高为j,底为t2。只要i,t1,j,t2都是正数并且i!=j(c不能平行于x轴)然后判断(-t1,i)*(t2,j)是否垂直,最后输出答案。
#include<stdio.h>
const int N=1001;
int f[N*N];
int main(){
for(int i=1;i<N;i++)
f[i*i]=i;
int a,b,t1,t2;
scanf("%d %d",&a,&b);
for(int i=1;i<a;i++){
for(int j=1;j<b;j++){
t1=f[a*a-i*i];
t2=f[b*b-j*j];
if(t1==0||t2==0||i==j) continue;
if(i*j==t1*t2){
printf("YES\n0 0\n%d %d\n%d %d\n",-t1,i,t2,j);
return 0;
}
}
}
printf("NO\n");
return 0;
}