func_code_string: #include <bits/stdc++.h>   using namespace std;   const double eps = 1e-9;   double sqrDist(double x1, double y1, double x2, double y2) {     return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);   }   double dist(double x1, double y1, double x2, double y2) {     return sqrt(sqrDist(x1, y1, x2, y2));   }   const double PI = acos(-1.0);   int main() {     int x0, y0, v, t;     scanf( %d%d%d%d , &x0, &y0, &v, &t);     double r0 = 1.0 * v * t;     int n;     scanf( %d , &n);     vector<pair<double, int> > a;     for (int i = 0; i < n; i++) {       int x, y, r;       scanf( %d%d%d , &x, &y, &r);       double d = sqrDist(x, y, x0, y0);       if (d < 1.0 * r * r + eps) {         printf( %.11f , 1.0);         return 0;       }       d = sqrt(d);       if (r + r0 < d - eps) {         continue;       }       double angL, angR, ang;       double angM = atan2(y - y0, x - x0);       if (angM < 0) {         angM += 2 * PI;       }       double tLen = sqrt(d * d - 1.0 * r * r);       if (tLen < r0 + eps) {         ang = asin(r / d);       } else {         ang = acos((d * d + r0 * r0 - 1.0 * r * r) / (2 * d * r0));       }       angL = angM - ang;       angR = angM + ang;       if (angL < 0) {         a.push_back(make_pair(angL + 2 * PI, 1));         a.push_back(make_pair(2 * PI, -1));         a.push_back(make_pair(0.0, 1));         a.push_back(make_pair(angR, -1));       } else if (angR > 2 * PI) {         a.push_back(make_pair(angL, 1));         a.push_back(make_pair(2 * PI, -1));         a.push_back(make_pair(0.0, 1));         a.push_back(make_pair(angR - 2 * PI, -1));       } else {         a.push_back(make_pair(angL, 1));         a.push_back(make_pair(angR, -1));       }     }     sort(a.begin(), a.end());     double last = 0;     int c = 0;     double ans = 0;     for (auto& p : a) {       if (c > 0) {         ans += p.first - last;       }       c += p.second;       last = p.first;     }     ans /= 2 * PI;     printf( %.11f , ans);     return 0;   }   