链接:https://ac.nowcoder.com/acm/contest/331/A

题意:

小希现在手里有一个连着的两块木条,长度分别为l1l1,l2l2,木条之间有一个无摩擦的连接点,木条之间可以相互转动,小希将其称之为双截棍。


现在小希把长为l1l1的木条的一端放在原点(0,0),任意转动这两根木条,小希想知道,是否有可能通过一种转动方式使得双截棍的另一端到达指定点呢?



如果不能,请输出所有能到达的点中离目标点最近的距离


思路:

到达的距离就是l1 - l2    ---    l1 + l2  ,考虑l1,l2的长短,

之后直接算点到原点的距离,记得用double

代码:



#include<bits/stdc++.h>
using namespace std;

double Get_Len(double x, double y)
{
return sqrt(x * x + y * y);
}

int main()
{
int l1,l2;
cin >> l1 >> l2;
if (l1 < l2)
swap(l1,l2);
double l = l1 - l2, r = l1 + l2;
int t;
cin >> t;
while (t--)
{
double x,y;
cin >> x >> y;
double len = Get_Len(x,y);
if (len <= r && len >= l)
printf("%.8lf\n",0.0);
else
printf("%.8lf\n",min(abs(len - r), abs(l - len)));
}

return 0;
}