题目描述
美丽的青青草原上生长着肥美的绿草,养育着羊村一村羊,但是由于温室效应加剧,整个青青草原缩小到只剩一块正方形区域(以(x0,y0)为左上角,d为边长)羊村一村羊也被迫生活在其中。这时灰太狼觉得机会来了,于是想出了一条妙计:以狼堡为圆心用绳子牵一头牛,把青青草原的草都给干完,羊们无处可去便会落入狼口。但是绳子就快不够了,灰太狼也由于太久没吃羊精神恍惚,不知道至少该用多长的绳子才能把青青草原的草干完,你作为灰太狼亲爱的侄子,快帮你叔叔算算吧?
狼堡和牛都可以看作质点,x坐标轴正向为右,y坐标轴正向为上。
输入
第一行输入三个整数,x0,y0,d,代表青青草原的左上角坐标和边长(-103<x0<103 , -103<x1<103 , 0<d<103)。
第二行输入两个整数,x1,y1,代表狼堡的位置(-103<x1<103 , -103<y1<103 )。
输出
输出一个数代表所需的最短的绳子长度(保留三位小数)。
样例输入 复制
0 2 2
2 2
样例输出 复制
2.828
思路:
正方形四个角四个点到狼堡的距离最大的就是需要的长度
#include<stdio.h>
#include<math.h>
main()
{
double x0,i,y0,d,x1,y1;
double s,n;
scanf("%lf %lf %lf",&x0,&y0,&d);
scanf("%lf %lf",&x1,&y1);
s=0;
n=sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0));
if(s<n)s=n;
n=sqrt((x1-(x0+d))*(x1-(x0+d))+(y1-y0)*(y1-y0));
if(s<n)s=n;
n=sqrt((x1-(x0+d))*(x1-(x0+d))+(y1-(y0-d))*(y1-(y0-d)));
if(s<n)s=n;
n=sqrt((x1-x0)*(x1-x0)+(y1-(y0-d))*(y1-(y0-d)));
if(s<n)s=n;
printf("%.3lf",s);
}