0
点赞
收藏
分享

微信扫一扫

直线的一般式

素锦时年_1b00 2022-04-01 阅读 181
c++

题目:
在这里插入图片描述
思路:
经过重心的直线可以把长方形分成面积相等的两部分。因为是长方形所以给出两个相对的点就可以求重心。
推导过程
在这里插入图片描述
需要注意的点:
因为double是拿二进制存的,所以进行计算和存储的适合会有微小的偏差,以及if(a)是去判断是不是每一位都为0
AC代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn=111111;
double a1,b1,a2,b2,a,b,c,ta1,tb1,ta2,tb2;
int main()
{
    cin>>a1>>b1>>a2>>b2;
    ta1=(a1+a2)/2;
    tb1=(b1+b2)/2;
    cin>>a1>>b1>>a2>>b2;
    ta2=(a1+a2)/2;
    tb2=(b1+b2)/2;
    a=tb1-tb2;
    b=ta2-ta1;
    c=ta1*tb2-ta2*tb1;
    if(abs(a)>1e-12)
    {
        b/=a;
        c/=a;
        a/=a;
    }
    else
    {
        c/=b;
        b/=b;
    }
    printf("%lf\n%lf\n%lf\n",a,b,c);
    return 0;
}
举报

相关推荐

0 条评论