• 炫酷双截棍 (基础几何)


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

    题目描述

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

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

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

    输入描述:

    第一行输入一个两个正整数l1l1,l2l2,表示木条长度。
    
    第二行输入一个正整数T,表示询问次数。
    
    随后T行,每行两个实数xixi,yiyi表示目标点的坐标。
    
    l1,l2≤1000l1,l2≤1000
    
    T≤1000T≤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

    计算两根棍子的和  与 差,如果给定的坐标长度在【差,和】的范围之中,则一定能有方法到达,反之,就输出离“和”或者“差”中最近的距离。 

    #include<iostream>
    #include<cmath>
    using namespace std;
    
    int main()
    {
    	int n,m,j,k,i,T;
    	double a,b ,c,sum,ans,x,y;
    	cin>>a>>b;
    	double Max = a+b;
    	double Min = fabs(a-b);
    	cin>>T;
    	while (T--)
    	{
    		cin>>x>>y;
    		double len = sqrt(x*x+y*y);
    		if (len<=Max&&len>=Min)
    		printf("0.00000000
    ");
    		else
    		{
    			printf("%.8lf
    ",min(fabs(len-Min),fabs(len-Max)));
    		}
    	}
    	
    	return 0;
     } 
  • 相关阅读:
    高校教师职评
    高校教师曝职评内幕:混行政圈比科研圈更重要
    【50.88%】【Codeforces round 382B】Urbanization
    【64.22%】【codefoces round 382A】Ostap and Grasshopper
    【u253】售货厅
    【u250】manhattan
    【19.77%】【codeforces 570D】Tree Requests
    【t063】最聪明的机器人
    Java Web整合开发(38) -- Log4J
    公网 or 内网
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451164.html
Copyright © 2020-2023  润新知