题目地址:戳这里
题目大意:给定直角边的边长,试着列举出一个整点三角形,使得没有一边和坐标轴平行,满足边长条件。
额 ,直接暴力枚举
但是注意下循环退出的时候,j有可能++ 所以要把flag那个写在后面。
代码:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int i,j,i1,j1;
bool ok=0;
bool flag=0;
for( i=1;i<a;i++)
{
for(j=1;j<b;j++){
i1=sqrt(a*a-i*i);
j1=sqrt(b*b-j*j);
if(i1==sqrt(a*a-i*i)&&j1==sqrt(b*b-j*j))
{
if(i!=j1&&i*j1==i1*j)
{
ok=1;
flag=1;
break;
}
}
}
if(flag) break;
}
if(!ok) cout<<"NO"<<endl;
else
{
cout<<"YES"<<endl;
cout<<0<<' '<<0<<endl;
cout<<-i1<<' '<<i<<endl;
cout<<j<<' '<<j1<<endl;
}
}