题目

alt

输入

alt

输出

alt

思路

题目已知a,b点坐标,以及三角形面积,求o点的x值。

联想到向量叉乘求三角形面积的公式。

于是得到|(xa-x)yb-ya(xb-x)|=4;

化简得到xayb-xbya+(ya-yb)x=+-4;

第一种情况ya=yb,消去x,即只有xayb-xbya=4或xayb-xbya=-4,x就可以是任意值;

第二种情况移项,x=(4+x2y1-x1y2)/(y1-y2);

因为面积误差 ≤0.001,所以最好保留10位小数。

完整代码

```#include<bits/stdc++.h>
using namespace std;
int main(){
    double x1,y1,x2,y2;
    cin>>x1>>y1>>x2>>y2;
    if(y1==y2)
        if(x1*y2-x2*y1==4||x1*y2-x2*y1==-4) cout<<0.0;
        else cout<<"no answer";
    else{
        double ans=(4+x2*y1-x1*y2)/(y1-y2);
        cout<<fixed<<setprecision(10)<<ans;
    }
    return 0;
}