题目:
小红在二维平面地图上标记了两个关键点 和
。
她现在需要在 轴上寻找一个锚点
,使得以
为顶点的三角形面积恰好等于
。
请你帮小红判断是否存在符合条件的锚点横坐标 。如果存在,请找出一个符合条件的
。
核心思路:
对于三个顶点,我们可以用到公式: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;
}

京公网安备 11010502036488号