func_code_string: #include <bits/stdc++.h>   using namespace std;   struct no {     int x, y, r;   };   no A, B, b, a;   int dist(no u, no v) {     return (u.x - v.x) * (u.x - v.x) + (u.y - v.y) * (u.y - v.y);   }   bool contido(no v, no u) {     if (u.r < v.r) return 0;     if ((sqrt(dist(v, u)) + (double)((v.r)) - 1e-2 < (double)(u.r))) return 1;     return 0;   }   bool disjunto(no v, no u) {     if (sqrt(dist(u, v)) > (double)(v.r + u.r) - 1e-2) return 1;     return 0;   }   int main() {     cin >> a.x >> a.y >> a.r >> A.r;     A.x = a.x, A.y = a.y;     cin >> b.x >> b.y >> b.r >> B.r;     B.x = b.x, B.y = b.y;     if (B.r < A.r) {       swap(B, A);       swap(a, b);     }     int ans;     if (contido(A, B)) {       if (contido(A, b))         ans = 4;       else if (contido(a, b) || contido(b, a))         ans = 2;       else if (disjunto(b, A))         ans = 2;       else         ans = 1;     } else if (disjunto(A, B)) {       ans = 4;     } else {       if (contido(a, b) || contido(b, a))         ans = 1;       else {         ans = 0;         if (disjunto(a, B)) ans++;         if (disjunto(b, A)) ans++;       }     }     cout << ans << endl;     return 0;   }   