问题 E: 羊村保卫战

题目描述

美丽的青青草原上生长着肥美的绿草,养育着羊村一村羊,但是由于温室效应加剧,整个青青草原缩小到只剩一块正方形区域(以(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);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值