func_code_string: #include <bits/stdc++.h>   typedef struct {     double x, y;   } point_t;   typedef struct {     double x, y, r;   } circle_t;   typedef struct {     double A, B, C;   } Line;   Line zhong_chui_xian(circle_t circle1, circle_t circle2) {     Line L1;     point_t p;     double k;     p.x = (circle1.x + circle2.x) / 2;     p.y = (circle1.y + circle2.y) / 2;     if (fabs(circle1.y - circle2.y) < 1E-8) {       L1.A = 1;       L1.B = 0;       L1.C = -p.x;     } else if (fabs(circle1.x - circle2.x) < 1E-8) {       L1.A = 0;       L1.B = 1;       L1.C = -p.y;     } else {       k = -1 / ((circle1.y - circle2.y) / (circle1.x - circle2.x));       L1.A = k;       L1.B = -1;       L1.C = p.y - k * p.x;     }     return L1;   }   int line_intersect(Line L1, Line L2, point_t& p) {     double d, d1, d2, d3;     d = L1.A * L2.B - L2.A * L1.B;     if (fabs(d) < 1E-8) {       d1 = L1.A / L2.A;       d2 = L1.B / L2.B;       d3 = L1.C / L2.C;       if (fabs(d1 - d2) < 1E-8 && fabs(d2 - d3) < 1E-8)         return 2;       else         return 0;     }     p.x = (L2.C * L1.B - L1.C * L2.B) / d;     p.y = (L2.A * L1.C - L1.A * L2.C) / d;     return 1;   }   circle_t yuan_guiji(circle_t circle1, circle_t circle2) {     circle_t circle3;     double keep1, keep2, keep3;     keep1 =         (circle2.r * circle2.r * circle1.x - circle1.r * circle1.r * circle2.x) /         (circle1.r * circle1.r - circle2.r * circle2.r);     keep2 =         (circle2.r * circle2.r * circle1.y - circle1.r * circle1.r * circle2.y) /         (circle1.r * circle1.r - circle2.r * circle2.r);     keep3 = (circle2.r * circle2.r * circle1.x * circle1.x -              circle1.r * circle1.r * circle2.x * circle2.x -              circle1.r * circle1.r * circle2.y * circle2.y +              circle2.r * circle2.r * circle1.y * circle1.y) /             (circle1.r * circle1.r - circle2.r * circle2.r);     circle3.x = -keep1;     circle3.y = -keep2;     circle3.r = sqrt(keep3 + keep1 * keep1 + keep2 * keep2);     return circle3;   }   int equa(double A, double B, double C, double& x1, double& x2) {     double f = B * B - 4 * A * C;     if (f < 0) return -1;     x1 = (-B + sqrt(f)) / (2 * A);     x2 = (-B - sqrt(f)) / (2 * A);     return 1;   }   double point_line_dis(point_t a, Line ln) {     return (fabs(ln.A * a.x + ln.B * a.y + ln.C) /             sqrt(ln.A * ln.A + ln.B * ln.B));   }   int line_circle_intersect(Line ln, circle_t Y, point_t& p1, point_t& p2) {     double t1, t2, len;     point_t p3;     p3.x = Y.x;     p3.y = Y.y;     len = point_line_dis(p3, ln);     if (len > Y.r) return 0;     int zz = -1;     if (fabs(ln.B) < 1e-8) {       p1.x = p2.x = -1.0 * ln.C / ln.A;       zz = equa(1.0, -2.0 * Y.y,                 Y.y * Y.y + (p1.x - Y.x) * (p1.x - Y.x) - Y.r * Y.r, t1, t2);       p1.y = t1;       p2.y = t2;     } else if (fabs(ln.A) < 1e-8) {       p1.y = p2.y = -1.0 * ln.C / ln.B;       zz = equa(1.0, -2.0 * Y.x,                 Y.x * Y.x + (p1.y - Y.y) * (p1.y - Y.y) - Y.r * Y.r, t1, t2);       p1.x = t1;       p2.x = t2;     } else {       zz = equa(           ln.A * ln.A + ln.B * ln.B,           2.0 * ln.A * ln.C + 2.0 * ln.A * ln.B * Y.y - 2.0 * ln.B * ln.B * Y.x,           ln.B * ln.B * Y.x * Y.x + ln.C * ln.C + 2 * ln.B * ln.C * Y.y +               ln.B * ln.B * Y.y * Y.y - ln.B * ln.B * Y.r * Y.r,           t1, t2);       p1.x = t1, p1.y = -1 * (ln.A / ln.B * t1 + ln.C / ln.B);       p2.x = t2, p2.y = -1 * (ln.A / ln.B * t2 + ln.C / ln.B);     }     if (p1.x - p2.x < 1E-8 && p1.y - p2.y < 1E-8)       return 1;     else       return 2;   }   double dist(double xa, double ya, double xb, double yb) {     return sqrt((xa - xb) * (xa - xb) + (ya - yb) * (ya - yb));   }   double max(double a, double b) { return a > b ? a : b; }   double min(double a, double b) { return a < b ? a : b; }   int circle_intersect(circle_t A, circle_t B, point_t& ia, point_t& ib) {     if (A.x == B.x && A.y == B.y) return 5;     double dd = dist(A.x, A.y, B.x, B.y);     if (A.r + B.r + 1E-8 < dd) return 1;     double k, a, b, d, aa, bb, cc, c, drt;     k = A.r;     a = B.x - A.x;     b = B.y - A.y;     c = B.r;     d = (c * c) - (k * k) - (a * a) - (b * b);     aa = 4 * (a * a) + 4 * (b * b);     bb = 4 * b * d;     cc = (d * d) - 4 * (a * a) * (k * k);     drt = (bb * bb) - 4 * aa * cc;     if (drt < 0) return 5;     drt = sqrt(drt);     ia.y = (-bb + drt) / 2 / aa;     ib.y = (-bb - drt) / 2 / aa;     if (fabs(a) < 1E-8) {       ia.x = sqrt((k * k) - (ia.y * ia.y));       ib.x = -ia.x;     } else {       ia.x = (2 * b * ia.y + d) / -2 / a;       ib.x = (2 * b * ib.y + d) / -2 / a;     }     ia.x += A.x;     ia.y += A.y;     ib.x += A.x;     ib.y += A.y;     if (fabs(ia.y - ib.y) < 1E-8) {       if (fabs(A.r + B.r - dd) < 1E-8) return 2;       if (fabs(dd - (max(A.r, B.r) - min(A.r, B.r))) < 1E-8) return 3;     }     return 4;   }   int main() {     circle_t circle[3];     int i, count;     Line L1, L2;     point_t p, p1, p2;     circle_t circle1, circle2;     for (i = 0; i < 3; i++)       scanf( %lf%lf%lf , &circle[i].x, &circle[i].y, &circle[i].r);     if (fabs(circle[0].r - circle[1].r) < 1E-8) {       L1 = zhong_chui_xian(circle[0], circle[1]);       if (fabs(circle[1].r - circle[2].r) < 1E-8) {         L2 = zhong_chui_xian(circle[1], circle[2]);         line_intersect(L1, L2, p);         printf( %0.5lf %0.5lf n , p.x, p.y);       } else {         circle2 = yuan_guiji(circle[1], circle[2]);         count = line_circle_intersect(L1, circle2, p1, p2);         if (count == 1) {           printf( %0.5lf %0.5lf n , p1.x, p1.y);         } else if (count == 2) {           if ((circle[0].r / dist(circle[0].x, circle[0].y, p1.x, p1.y)) >               (circle[0].r / dist(circle[0].x, circle[0].y, p2.x, p2.y)))             printf( %0.5lf %0.5lf n , p1.x, p1.y);           else             printf( %0.5lf %0.5lf n , p2.x, p2.y);         }       }     } else {       circle1 = yuan_guiji(circle[0], circle[1]);       if (fabs(circle[1].r - circle[2].r) < 1E-8) {         L2 = zhong_chui_xian(circle[1], circle[2]);         count = line_circle_intersect(L2, circle1, p1, p2);         if (count == 1) {           printf( %0.5lf %0.5lf n , p1.x, p1.y);         } else if (count == 2) {           if ((circle[0].r / dist(circle[0].x, circle[0].y, p1.x, p1.y)) >               (circle[0].r / dist(circle[0].x, circle[0].y, p2.x, p2.y)))             printf( %0.5lf %0.5lf n , p1.x, p1.y);           else             printf( %0.5lf %0.5lf n , p2.x, p2.y);         }       } else {         circle2 = yuan_guiji(circle[1], circle[2]);         count = circle_intersect(circle1, circle2, p1, p2);         if (count == 2 || count == 3) {           printf( %0.5lf %0.5lf n , p1.x, p1.y);         } else if (count == 4) {           if ((circle[0].r / dist(circle[0].x, circle[0].y, p1.x, p1.y)) >               (circle[0].r / dist(circle[0].x, circle[0].y, p2.x, p2.y)))             printf( %0.5lf %0.5lf n , p1.x, p1.y);           else             printf( %0.5lf %0.5lf n , p2.x, p2.y);         }       }     }     return 0;   }   