func_code_string: #include <bits/stdc++.h>   struct point {     double x, y;   } p, q, u;   double v, vp, r, R, k;   double po, qo, pa, qa, angp, angq, angpq;   point rorate(point a, double ang) {     point c;     c.x = a.x * cos(ang) - a.y * sin(ang);     c.y = a.x * sin(ang) + a.y * cos(ang);     return c;   }   double disp2o(point a) { return a.x * a.x + a.y * a.y; }   double cal(double pq) {     if (pq * pq < po || pq * pq < qo) return pq;     angpq = acos((po + qo - (pq * pq)) / (2 * sqrt(po * qo)));     return k + (angpq - angp - angq) * r;   }   int bi(double t) {     double d, dis, ang;     ang = t * vp / R;     q = rorate(u, ang);     dis = sqrt((p.x - q.x) * (p.x - q.x) + (p.y - q.y) * (p.y - q.y));     d = fabs(p.x * q.y - p.y * q.x) / dis;     if (d < r) dis = cal(dis);     if (dis > v * t + 1e-8) return 1;     if (dis < v * t - 1e-8) return -1;     return 0;   }   int main() {     double lt, rt, mid;     int t;     while (~scanf( %lf%lf%lf , &u.x, &u.y, &vp)) {       scanf( %lf%lf%lf%lf , &p.x, &p.y, &v, &r);       qo = disp2o(u);       R = sqrt(qo);       po = disp2o(p);       angp = acos(r / sqrt(po));       angq = acos(r / R);       k = sqrt(po - (r * r)) + sqrt(qo - (r * r));       lt = 0;       rt = 1e4;       while (rt > lt + 1e-8) {         mid = (rt + lt) / 2;         t = bi(mid);         if (t == 1)           lt = mid;         else if (t == -1)           rt = mid;         else           break;       }       printf( %.10lf n , mid);     }     return 0;   }   