func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 5, MOD = 1e9 + 7;   const double EPS = 1e-9;   double PI = acos(-1);   double square(long long x) {     double ret = double(x) * double(x);     return ret;   }   vector<pair<double, int> > V;   double deg(double x) { return (x * 180) / PI; }   double mod(double x) {     while (x < 0) x += 2 * PI;     while (x >= 2 * PI) x -= 2 * PI;     return x;   }   int main() {     int n;     long long x0, y0, v, T, d, x, y, r;     cin >> x0 >> y0 >> v >> T;     double dist = v * T;     double start = 0, ans = 0;     int cntr = 0;     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> x >> y >> r;       x -= x0, y -= y0;       double d = sqrt(square(x) + square(y));       if (d <= r) {         cout <<  1.000000000 n ;         return 0;       }       if (dist >= d - r) {         double angle;         if (square(x) + square(y) - square(r) <= square(dist))           angle = asin(r / d);         else           angle = acos((square(dist) + square(x) + square(y) - square(r)) /                        (2 * dist * d));         angle += EPS;         double slope = atan2(y, x);         double a = mod(slope - angle), b = mod(slope + angle);         V.push_back({a, 1});         V.push_back({b, -1});         if (a > b) cntr++;       }     }     sort(V.begin(), V.end());     for (auto v : V) {       if (v.second == 1) {         if (cntr == 0) start = v.first;         cntr++;       } else {         if (cntr == 1) ans += (v.first - start);         cntr--;       }     }     if (cntr > 0) ans += 2 * PI - start;     ans = ans / (2 * PI);     cout << setprecision(10) << fixed << ans << endl;   }   