-
먼저 두 점이 같을 때 따로 처리해주고 거리의 제곱으로 판별하면 부호 신경쓸 것 없이 간단하다.
#include <bits/stdc++.h> using namespace std; int main(void) { int T; cin >> T; while (T--) { int x1, y1, r1, x2, y2, r2; cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2; int d = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); if (d == 0) { if (r1 == r2) cout << "-1" << "\n"; else cout << "0" << "\n"; } else if (d > (r1 + r2) * (r1 + r2)) { cout << "0" << "\n"; } else if (d == (r1 + r2) * (r1 + r2) || d == (r1 - r2) * (r1 - r2)) { cout << "1" << "\n"; } else if (d > (r1 - r2) * (r1 - r2) && d < (r1 + r2) * (r1 + r2)) { cout << "2" << "\n"; } else cout << "0" << "\n"; } }