链接:https://ac.nowcoder.com/acm/contest/331/A
来源:牛客网
题目描述
小希现在手里有一个连着的两块木条,长度分别为l1,l2,木条之间有一个无摩擦的连接点,木条之间可以相互转动,小希将其称之为双截棍。
现在小希把长为l1的木条的一端放在原点(0,0),任意转动这两根木条,小希想知道,是否有可能通过一种转动方式使得双截棍的另一端到达指定点呢?
如果不能,请输出所有能到达的点中离目标点最近的距离。
输入描述:
第一行输入一个两个正整数l1,l2,表示木条长度。
第二行输入一个正整数T,表示询问次数。
随后T行,每行两个实数x,y表示目标点的坐标。
l1,l2≤1000
T≤1000
|x|,|y|≤10000
输出描述:
对于每次询问,如果可以到达,输出0,如果无法到达,给出所有能到达的点中离目标点最近的距离。
你的答案将被认为是正确的,如果相对误差不大于1e-6。
示例1
输入
复制
23 13
3
15 1
40 0
0 0
输出
复制
0.00000000
4.00000000
10.00000000
签到,水题
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
double l1,l2;
ll t;
cin>>l1>>l2;
cin>>t;
while(t--){
double x,y;
cin>>x>>y;
double s=sqrt(x*x+y*y);
if(abs(l1-l2)<=s&&(l2+l1)>=s) printf("0.00000000");
else if(s<abs(l1-l2)) printf("%.8lf",abs(l1-l2)-s);
else printf("%.8lf",s-(l1+l2));
cout<<"\n";
}
return 0;
}