最长距离
【问题描述】
北京和天津两座超大城市正在融合为一个超级都市群,融合首要的问题就是 互通,也就是解决交通问题,现在京津冀领导小组正在筹划在两座城市修建一条 集客货运与一体的城际高铁,初步的设想如下:分别以两座城市中心作为圆心、 原有边界中距离圆心最远的长度作为半径各自划定新的区域,假设这样的两个圆 有不仅仅一个交点。现在以其中一个交点作高铁的一个站点规划一条直线型的高 铁线路,而且为了惠及更多,领导小组还希望该高铁经过两座城市尽可能多的地 方,考虑到建设成本,如果一公里的建设成本为一个成本单位,现在请你计算一 下该高铁的建设成本是多少?
输入输出
【输入数据】
第一行有三个用空格隔开的整数 x1,y1,r1,依次表示北京的中心坐标和新 区域半径;
第二行有三个用空格隔开的整数 x2,y2,r2,依次表示天津的中心坐标和新 区域半径;
输入数据保证两圆相交。
【输出数据】
输出钙高铁的建设成本。你的输出需要保留 6 位小数。
样例 Sample
【输入样例】
5 4 4
-3 2 5
【输出样例】
16.492423
【数据规模】
对于 30%的数据,x1=y1;
对于 50%的数据,r1=r2;
对于 100%的数据,输入数据在 integer 范围内。
分析
该题当圆心在另一圆外时直接就是圆心距的二倍,因为不是圆心距的二倍就是以连心线为斜边的直角三角形的直角边的二倍。
当圆心在园内或圆上时最长就为大圆直径。
代码如下
program chord;
var x1,x2,y1,y2,r1,r2:longint;
a,b,c:double;
function max(a,b:double):double;
begin
if a>b then exit(a);
exit(b);
end;
begin
readln(x1,y1,r1);
readln(x2,y2,r2);
a:=sqrt(sqr(x1-x2)+sqr(y1-y2))*2;
b:=r1*2;
c:=r2*2;
write(max(max(a,b),c):0:6);
end.
呵呵,好短的代码。。。。。。