题目描述




解题思路
不难发现只有当两个直线垂直且交于正方形中心时,才可四等分正方形。因此,本题只需判断一下两个条件:
两直线垂直,等价于 A1*A2+B1*B2==0
两直线交于正方形中心,正方形中心点坐标可由对角点坐标取平均得到,只需将中心点坐标代入两直线方程检验即可
代码实现
#include<bits/stdc++.h>
using namespace std;
int main( )
{
array<int,4> x,y;
for(int i=0;i<4;++i){
cin>>x[i]>>y[i];
}
int a1,b1,c1,a2,b2,c2;
cin>>a1>>b1>>c1>>a2>>b2>>c2;
bool flag=false;
if(a1*a2+b1*b2==0){
double x0=(x[0]+x[2])/2.0;
double y0=(y[0]+y[2])/2.0;
const double eps=1e-6;
if(fabs(a1*x0+b1*y0+c1)<eps && fabs(a2*x0+b2*y0+c2)<eps){
flag=true;
}
}
if(flag) cout<<"yes"<<endl;
else cout<<"no"<<endl;
return 0;
}