zoukankan      html  css  js  c++  java
  • 牛客寒假算法基础集训营5 A 炫酷双截棍

    链接:https://ac.nowcoder.com/acm/contest/331/A
    来源:牛客网

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

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

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

    输入描述:

    第一行输入一个两个正整数l1,l2,表示木条长度。

    第二行输入一个正整数T,表示询问次数。

    随后T行,每行两个实数xi,yi表示目标点的坐标。

    l1,l21000l1,l2≤1000

    T1000T≤1000

    |x|,|y|10000|x|,|y|≤10000

    输出描述:

    对于每次询问,如果可以到达,输出0,如果无法到达,给出所有能到达的点中离目标点最近的距离。

    你的答案将被认为是正确的,如果相对误差不大于1e-6。
    示例1

    输入

    23 13
    3
    15 1
    40 0
    0 0

    输出

    0.00000000
    4.00000000
    10.00000000

    思路:已知起点为原点,终点坐标也在测试样例中给出,可以算出两点之间的距离;就知道了三边的距离;
    如果这三边可以构成三角形,就输出0;若不能,输出还差多少就可以构成三角形;

    代码如下:
    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    
    int main()
    {
        double a,b,c,x,y,re;
        int n;
        cin >> a >> b >> n;
        while(n--)
        {
            cin >> x >> y;
            c = sqrt(x * x + y * y);
            double aa[3] = {a,b,c};
            sort(aa,aa + 3);
            if(aa[0] + aa[1] >= aa[2])
            {
                re = 0;
                printf("%.08f
    ",re);
            }
    
            else
            printf("%.08f
    ",aa[2] - aa[1] - aa[0]);
        }
    	return 0;
    }
    

      

  • 相关阅读:
    es6常用语法(持续更新中)
    发送请求时params和data的区别
    js引擎查询 LHS RHS(消化ing)
    Linux常用命令(持续更新)
    Https理解
    MVVM理解
    原生js与jquery区别
    Cookie如何防范XXS攻击
    基于python的appium环境搭建
    pycharm安装步骤
  • 原文地址:https://www.cnblogs.com/lu1nacy/p/10347136.html
Copyright © 2011-2022 走看看