链接:https://ac.nowcoder.com/acm/contest/120563/H 来源:牛客网
题目描述
小红在二维平面地图上标记了两个关键点 𝐴 ( 𝑥 𝑎 , 𝑦 𝑎 ) 和 𝐵 ( 𝑥 𝑏 , 𝑦 𝑏 )。 她现在需要在 x 轴上寻找一个锚点 O(x,0),使得以 A,B,O 为顶点的三角形面积恰好等于 2。 请你帮小红判断是否存在符合条件的锚点横坐标 x。如果存在,请找出一个符合条件的 x。
输入描述:
第一行输入两个整数 𝑥 𝑎 , 𝑦 𝑎 ( − 1 0^ 4 ≦ 𝑥 𝑎 , 𝑦 𝑎 ≦ 1 0^ 4 ) ,代表点 A 的坐标。 第二行输入两个整数 𝑥 𝑏 , 𝑦 𝑏 ( − 1 0^ 4 ≦ 𝑥 𝑏 , 𝑦 𝑏 ≦ 1 0^ 4 ) ,代表点 B 的坐标。
输出描述:
如果存在满足条件的 x,输出一个实数表示该坐标(你只需要保证最终构造的三角形面积与 2 的绝对误差不超过 0.001 即可);否则,输出
no answer。
如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。 题解: 使用交叉乘算出x轴上符合条件的点即可,需注意当A,B点y轴坐标一致时的特殊情况,最后输出时注意精度即可。 代码如下:
void solve()
{
ll a,b,c,d;
cin>>a>>b>>c>>d;
if(b==d)
{
if(abs(a-c)*(abs(b))/2!=2)
cout<<"no answer"<<endl;
else cout<<0<<endl;
}
else{
double e=1.0*(4-a*d+b*c)/(b-d);
printf("%.30lf\n",e);
}
}
如有错误烦请指正谢谢

京公网安备 11010502036488号