func_code_string: #include <bits/stdc++.h>   using namespace std;   const double PI = acos(-1);   const int maxn = 5e5;   struct line {     double x, y;   } A[maxn];   long long X, Y, R;   double x0, Y0, v, T, d, x, y, r, M, D;   double a, b, now, ans, th, l, Max;   int i, n, la;   double sqr(double x) { return x * x; }   double dist(double x, double y, double x0, double Y0) {     return sqrt(sqr(x - x0) + sqr(y - Y0));   }   bool cmp(line a, line b) { return a.x < b.x || (a.x == b.x && a.y < b.y); }   int main() {     scanf( %lf%lf%lf%lf , &x0, &Y0, &v, &T);     M = v * T;     scanf( %d , &n);     for (i = 1; i <= n; i++) {       scanf( %lf%lf%lf , &x, &y, &r);       X = x - x0;       Y = y - Y0;       R = r;       if (X * X + Y * Y <= R * R) {         printf( 1 );         return 0;       }       d = dist(x0, Y0, x, y);       a = d - r;       b = sqrt(sqr(d) - sqr(r));       double B = atan2(y - Y0, x - x0);       if (a < M) {         if (b <= M) {           th = asin(r / d);         } else {           th = acos((M * M + d * d - r * r) / (2 * M * d));         }         l = B - th;         r = B + th;         if (l < -PI) {           A[++la] = (line){l + 2 * PI, PI};           l = -PI;         }         if (r > PI) {           A[++la] = (line){-PI, r - 2 * PI};           r = PI;         }         A[++la] = (line){l, r};       }     }     if (!la) {       printf( 0 );       return 0;     }     sort(A + 1, A + la + 1, cmp);     now = A[1].y - A[1].x;     Max = A[1].y;     for (i = 2; i <= la; i++) {       Max = max(Max, A[i].x);       if (A[i].y < Max) continue;       now += A[i].y - Max;       Max = A[i].y;     }     ans = now / (2 * PI);     printf( %.10lf , ans);     return 0;   }   