1. 程式人生 > >牛客寒假5-A.炫酷雙截棍

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

review 不能 min -- sin XML 就是 n) 連接

鏈接: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;
}

  

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