可以用数学方法做
初试爬山
#include<stdio.h>
#include<cmath>
const int fx[4]={1,-1,0,0},fy[4]={0,0,1,-1};
inline double sqr(double x){return x*x;}
const double eps=1e-6;
double x[3],y[3],r[3],X,Y;
inline double judge(double X,double Y)
{
static double Tan[3];
for (int i=0;i<3;i++) Tan[i]=sqrt(sqr(X-x[i])+sqr(Y-y[i]))/r[i];
double rt=0;
for (int i=0;i<3;i++) rt+=sqr(Tan[i]-Tan[(i+1)%3]);
return rt;
}
int main()
{
for (int i=0;i<3;i++) scanf("%lf%lf%lf",x+i,y+i,r+i);
X=(x[0]+x[1]+x[2])/3;
Y=(y[0]+y[1]+y[2])/3;
for (double st=1;st>eps;)
{
bool flag=1;
for (int i=0;i<4;i++) if (judge(X+fx[i]*st,Y+fy[i]*st)<judge(X,Y))
X+=fx[i]*st,Y+=fy[i]*st,flag=0;
if (flag) st/=2;
}
if (judge(X,Y)<eps) printf("%.5lf %.5lf\n",X,Y);
}