切蛋糕——正方形四等分问题

题目描述

解题思路

不难发现只有当两个直线垂直且交于正方形中心时,才可四等分正方形。因此,本题只需判断一下两个条件:

  • 两直线垂直,等价于 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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值