最长线段
Problem 1 :最长线段
(chord.pas/chord.in/chord.out)
【问题描述】
给定两个圆各自的圆心坐标和半径长。过其中一个交点作直线,该直线与圆的另外两个交点分别为A、B。线段AB最长是多少?
【输入数据】
第一行有三个用空格隔开的整数x1,y1,r1,依次表示第一个圆的圆心坐标和半径;
第二行有三个用空格隔开的整数x2,y2,r2,依次表示第二个圆的圆心坐标和半径;
输入数据保证两圆相交。
【输出数据】
输出AB的最大长度。你的输出需要保留6位小数。
【输入样例】
5 4 4
-3 2 5
【输出样例】
16.492423
【数据规模】
对于30%的数据,x1=y1;
对于50%的数据,r1=r2;
对于100%的数据,输入数据在integer范围内。
当场没做出来,当时觉得正解是最小的,,也没很想,画个图就明白了.
#include<iostream> #include<cmath> using namespace std; int x,y,X,Y; int main() { freopen("chord.in","r",stdin); freopen("chord.out","w",stdout); int t; cin>>x>>y>>t; cin>>X>>Y>>t; double ans=sqrt((x-X)*(x-X)+(y-Y)*(y-Y)); printf("%.6f",2*ans); return 0; }