思路:枚举一条边的横坐标,注意第三条边别和坐标轴并行就行。
AC代码如下:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
void solve()
{int T,t,n,m,i,j,k,a,b,a1,a2=1,b1,b2;
scanf("%d%d",&a,&b);
for(a1=1;a1<a;a1++)
{ a2=sqrt(a*a-a1*a1);
if(a*a==a1*a1+a2*a2)
{ b1=a1*b/a;
b2=a2*b/a;
if(b*b==b1*b1+b2*b2 && a2!=b1)
{ printf("YES\n");
printf("0 0\n");
printf("%d %d\n",a1,a2);
printf("%d %d\n",-b2,b1);
return;
}
}
}
printf("NO\n");
}
int main()
{ solve();
}