题目:

小红在二维平面地图上标记了两个关键点
她现在需要在 轴上寻找一个锚点 ,使得以 为顶点的三角形面积恰好等于
请你帮小红判断是否存在符合条件的锚点横坐标 。如果存在,请找出一个符合条件的

核心思路:

对于三个顶点,我们可以用到公式:1/2( (xa - x) * yb-(xb - x) * ya)=1/2(xa * yb - xb * ya + x ( ya - yb )). 当 ya = yb时(A、B 在同一条水平线上): 此时等式中 x 的系数(ya - yb)=0,等式简化为 |c| = 4; 若abs(c)=4:任意 x 都满足条件(因为 x 被消去),直接输出0; 若abs(c)≠4:无满足条件的 x,输出no answer。 当 ya ≠ yb时(A、B 不在同一水平线): 此时 x 的系数不为 0,可直接解出 ans: 用1.0*(4-c)/(ya-yb)将整数运算转为浮点数,避免整数除法的精度丢失,最后用printf("%.7f")输出 7 位小数,保证结果精度。

#include<bits/stdc++.h>
using namespace std;
inline void optimizeIO() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
}

int main() {
	optimizeIO();
	int xa,ya,xb,yb;
	cin>>xa>>ya>>xb>>yb;
	int c=xa*yb-xb*ya;
	if(ya==yb)
	{
		if(abs(c)==4)
			cout<<0;
		else cout<<"no answer";
	}
	else {
        double ans=1.0*(4-c)/(ya-yb);
        printf("%.7f",ans);
    }
	return 0;
}