牛客寒假5-A.炫酷双截棍

链接: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
",0.0);
        else
            printf("%.8lf
",min(abs(len - r), abs(l - len)));
    }

    return 0;
}

  

原文地址:https://www.cnblogs.com/YDDDD/p/10353791.html